为什么不保存用户模型中的Django CharField?

时间:2020-04-15 15:33:49

标签: python html django django-models django-forms

我为内置用户模型分配了一个名为“描述”的CharField作为字段,当我更改配置文件时,它是一个名为Description的CharacterField,但是当我填写任何内容并单击“完成”时,配置文件的描述为空。

这是我的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']

这是我的users / 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 %}

请帮助,可能这只是一个愚蠢的错误,但我看不到

0 个答案:

没有答案