簡體   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