Почему мое Django CharField в модели User не сохраняется? - PullRequest
0 голосов
/ 15 апреля 2020

Я назначил CharField с именем «description» в качестве поля для встроенной пользовательской модели, и когда я меняю профиль, появляется CharacterField с именем Description, но когда я заполняю любой контент и нажимаю «Готово», Описание профиля остается пустым.

Вот как выглядит часть моего кода в моем файле users / forms.py:

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import Profile

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField()
    description = forms.CharField(required=False, max_length=100)

    class Meta:
        model = User
        fields = ['username', 'email', 'description']

Вот какая часть моих пользователей / Файл views.py выглядит следующим образом:

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

def Profile(request):
    return render(request, 'users/profile.html')

@login_required
def ProfileUpdate(request):
    if request.method == "POST":
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)

        if u_form.is_valid() and p_form.is_valid():
            u_form.save()
            p_form.save()
            messages.success(request, f"Your account has been updated")
            return redirect("/profile")

    else:
        u_form = UserUpdateForm(instance=request.user)
        p_form = ProfileUpdateForm(instance=request.user.profile)

    context = {
        'u_form': u_form,
        'p_form': p_form,
    }

    return render(request, 'users/profileupdate.html', context)

Мой файл urls.py выглядит следующим образом:

from django.urls import include, path
from users import views as user_views

urlpatterns = [
    ...,
    path('profile/', user_views.Profile, name="profile"),
    path('profile/update', user_views.ProfileUpdate, name="profile-update"),


]

А мой файл "profile. html" выглядит следующим образом:

{% extends 'webapp/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>
            </div>
        </div>
        <form method="POST" enctype="multipart/form-data">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Profile Info</legend>
                    <h5 style="color: rgb(63, 63, 209)" class="mr-4">Username*</h5>
                    <h6>{{ user.username }}</h6>
                    <br>
                    <h5 style="color: rgb(63, 63, 209)" class="mr-4">Email*</h5>
                    <h6>{{ user.email }}</h6>
                    <br>
                    <h5 style="color: rgb(63, 63, 209)" class="mr-4">Description</h5>
                    <h6>{{ user.description }}</h6>
                    <br>
                    <h5 style="color: rgb(63, 63, 209)">Image*</h5>
                    <img class="rounded-circle account-img" src="{{ user.profile.image.url }}">
            </fieldset>
            {% if request.user.email == user.email %}
            <div class="form-group">
                <a class="btn btn-outline-primary" href="{% url 'profile-update' %}">Edit Profile</a>
            </div>
            {% endif %}
        </form>
    </div>
{% endblock content %}

Пожалуйста, помогите, возможно, это просто глупая ошибка, но я ее не вижу

...