Python 不保存某些字段的数据

Python 不保存某些字段的数据,python,django,Python,Django,您好,我正在尝试将新注册用户保存到数据库。除了本地用户模型外,我还有一个配置文件模型,其中包含其他字段,这是我的问题,注册后名为“性别”和“生日”的字段不会保存到数据库中,但用户和配置文件是使用相应的字段创建的 models.py class Profile(models.Model): GENDER_CHOICES = [ ('male', 'Male'), ('female', 'Female'), ('other', 'Other'

您好,我正在尝试将新注册用户保存到数据库。除了本地用户模型外,我还有一个配置文件模型,其中包含其他字段,这是我的问题,注册后名为“性别”和“生日”的字段不会保存到数据库中,但用户和配置文件是使用相应的字段创建的

models.py

class Profile(models.Model):

    GENDER_CHOICES = [
        ('male', 'Male'),
        ('female', 'Female'),
        ('other', 'Other'),
    ]
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image_prof = models.ImageField(
        default='default.jpg', upload_to='profile_pics')
    gender = models.CharField(
        max_length=100,
        choices=GENDER_CHOICES,
        default='male',)

    birthday = models.DateField(name='birthday', null=True)


    def __str__(self):
        return f'{self.user.username} Profile'


    def save(self):
        super().save()

        img = Image.open(self.image.path)

        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.image.path)
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,  ProfileGenderBirthdayForm


def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        bg_form = ProfileGenderBirthdayForm(request.POST)
        if form.is_valid():
            user = form.save()
            if bg_form.is_valid():
                user.profile.save()
            username = form.cleaned_data.get('username')
            messages.success(
                request, f'{username} Your account has been created! You can now log in')
            return redirect('login')
    else:
        form = UserRegisterForm()
        bg_form = ProfileGenderBirthdayForm()

    context = {
        'form': form,
        'bg_form': bg_form}

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

{%extends“indi/base.html”%}{%load crispy_forms_tags%}{%block content%}
{%csrf_令牌%}
今天加入
{{form | crispy}}
{{bg_form|crispy}}
注册
已经有账户了吗?
{%endblock内容%}

非常感谢

您从未保存过配置文件表单。应该是:

if form.is_valid() and bg_form.is_valid():
    user = form.save()
    profile = bg_form.save(commit=False)
    profile.user = user
    profile.save()

我们可以看到htmlI刚刚添加了htmlI有这样的错误..IntegrityError at/register/UNIQUE constraint失败:users\u profile.user\u idYou显然在用户上有一个自动创建配置文件的post save信号。你应该把它去掉。
if form.is_valid() and bg_form.is_valid():
    user = form.save()
    profile = bg_form.save(commit=False)
    profile.user = user
    profile.save()