Свойство модели отображает значение по умолчанию для поля вместо фактического значения - PullRequest
0 голосов
/ 02 апреля 2020

Я новичок Django, и я начал работать над своим первым проектом. Я реализовал модель "extendedUser" с полем medic_code, расширяющим 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})

Также после создания пользователя и отображения поля medic_code в оболочке Django для этого пользователя, собственно значение отображается. В чем может быть проблема?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...