繁体   English   中英

自定义用户字段的 Django 默认值未添加到数据库表中

[英]Django Default value for a custom user field is not added into the db tables

我正在使用Python93.7Django(2.2)开发一个项目,其中我扩展了用户模型为用户添加了自定义文件。 我在模型中为该字段定义了一个默认值,但是当我在表单 sibmission 上将它留空时,默认值不会添加到数据库中。

这是我的模型:来自models.py

class CustomUser(User):
    team = models.CharField(max_length=255, default='NotInGroup', blank=True)

这是我的观点:来自views.py

if form.is_valid():
    print('form is valid')
    print(form.cleaned_data['team'])
    if not form.cleaned_data['team'] == '':
         form.team = form.cleaned_data['team']
     else:
         form.team = 'Default'
    print(form.team)
    user = form.save()

如果我将form.team留空,它会打印出Default但不会保存在数据库中。 这是我的表格:来自forms.py

class CustomUserCreationForm(UserCreationForm):
    class Meta(UserCreationForm):
        model = CustomUser
        fields = ('first_name', 'last_name', 'email', 'username', 'team', 'password1', 'password2')

要扩展User模型,您必须使用AbstractUser类,即:

from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
    team = models.CharField(max_length=255, default='NotInGroup', blank=True)

现在在settings.py添加AUTH_USER_MODEL

AUTH_USER_MODEL = 'myapp.CustomUser'

你有尝试过吗?

if form.is_valid():
    user = form.save(commit=False) # this will not create a entry in DB
    if not form.cleaned_data['team']: user.team = 'Default' user.save() # this will create a entry in DB

除此之外,如果您要扩展Django Auth User模型 ,则应该继承AbstractUser类而不是User

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM