[英]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.