[英]Django Default value for a custom user field is not added into the db tables
我正在使用Python93.7
和Django(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.