[英]What is the significance of fields in Meta Class of UserCreationForm in Django?
我是 Django 菜鳥,我有一個問題,我知道這個美麗社區的人們可以幫助我回答。 在我的 Django 項目中,我創建了一個具有自定義字段“數字”的自定義用戶(使用 AbstractUser)。 自定義用戶 model 名為 AdminUser。
#models.py
class AdminUser(AbstractUser):
number = PhoneNumberField(blank=False, unique=True, editable=True)
is_staff = models.BooleanField(default=True)
is_superuser = models.BooleanField(default=False)
REQUIRED_FIELDS = ['number']
objects = AdminUserManager()
def __str__(self):
return self.username
我已經為此 class 分配了一個自定義 UserAdmin
#admin.py
class CustomUserAdmin(UserAdmin):
form = AdminUserChangeForm
add_form = AdminUserCreationForm
model = AdminUser
list_display = ['username', 'first_name', 'last_name', 'number']
list_filter = ['is_superuser', 'first_name']
"""Fields when editing users"""
fieldsets = UserAdmin.fieldsets + (
('Primary Contact', {'fields': ('number',)}),
)
"""Fields when adding new user"""
add_fieldsets = UserAdmin.add_fieldsets + (
('New User Credentials', {'fields': ('number', 'is_staff', 'is_superuser', 'first_name', 'last_name', 'email')}),
)
和 forms 一樣
#forms.py
class AdminUserCreationForm(UserCreationForm):
class Meta(UserChangeForm.Meta):
model = AdminUser
#how does 'fields' below affect the form structure??
fields = ('username', 'email', 'number')
class AdminUserChangeForm(UserChangeForm):
class Meta:
model = AdminUser
fields = ('username', 'email', 'number')
我的問題是 forms.py 中 Meta class 中的“字段”元組如何影響創建和更改 forms 的結構? 當我在字段元組中刪除或添加元素時,Django 管理員中的這些 forms 沒有區別。 影響表單結構的是 CustomUserAdmin 中的字段集和 add_fieldsets。 那么forms.py的Meta class中的字段有什么用呢? 它們僅用於信息用途嗎?
我懷疑如果您的CustomerAdmin
不是從UserAdmin
繼承的,它會按預期工作。 您使用的 ModelAdmin 字段將覆蓋表單上指定的fields
。
如果您在 admin 之外使用 ModelForms,它也可以按您的預期工作,但 admin 是一種古老的笨拙的東西,可能並不總是按照您的想法工作。
一般來說,這些fields
指定 model 中的哪些字段,正如您所建議的那樣,它在大多數情況下都可以工作(只是在這個情況下不行)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.