模型属性显示字段的默认值,而不是实际值

时间:2020-04-01 23:29:31

标签: django templates authentication

我是Django的初学者,我开始从事我的第一个项目。我用medic_code字段实现了模型“ extendedUser”,扩展了User。在模板中显示medic_code时,这似乎是一个问题。它不会显示用户的实际属性,但会显示默认值:“”。

模板

{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">
      <div class="media">
        <img class="rounded-circle account-img" src="{{ user.profile.image.url }}">
        <div class="media-body">
          <h2 class="account-heading">{{ user.username }}</h2>
           <p class="text-secondary">{{ user.email }} </p>
           <p class="text-secondary">{{ user.medic_code }}</p> (empty string here)
        </div>
      </div>
      <!-- FORM HERE -->
    </div>
{% endblock content %}

models.py:

from django.db import models
from django.contrib.auth.models import User

class extendedUser(User):
    medic_code = models.CharField(max_length=20, default='')

users / forms.py:

from django import forms
from django.contrib.auth.forms import UserCreationForm
from users.models import extendedUser


class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()
    medic_code = forms.CharField(max_length=20)
    class Meta:
        model = extendedUser
        fields = ['username', 'email', 'medic_code', 'password1', 'password2']

views.py:

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import UserRegisterForm

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            user = form.save()
            #user.refresh_from_db()
            user.medic_code = form.cleaned_data.get('medic_code')
            user.save()
            username = form.cleaned_data.get('username')
            messages.success(request, f'Your account has been created! You are now able to log in! Your medic code {user.medic_code}') #correct value displayed here
            return redirect('login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form': form})


@login_required
def profile(request):
    user = request.user
    return render(request, 'users/profile.html', {'user':user})

另外,在我创建一个用户并在该用户的Django Shell中显示medic_code字段之后,也会显示正确的值。可能是什么问题?

谢谢!

0 个答案:

没有答案
相关问题