在 Django 中需要的 ModelAdmin 的字段集中创建一个字段
Make a field in fieldset of ModelAdmin required in Django
我需要根据需要在 ModelAdmin class 的字段集变量中创建一些字段,以便如果未在表单中选择这些字段,用户将无法创建或更新用户实例。我该怎么做?
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = User
class MyUserCreationForm(UserCreationForm):
error_message = UserCreationForm.error_messages.update({
'duplicate_username': 'This username has already been taken.'
})
class Meta(UserCreationForm.Meta):
model = User
def clean_username(self):
username = self.cleaned_data["username"]
try:
User.objects.get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate_username'])
@admin.register(User)
class UserAdmin(AuthUserAdmin):
fieldsets = AuthUserAdmin.fieldsets + (
(None, {'fields': ('user_type', 'country')}),
)
add_form = MyUserCreationForm
这里我想在管理面板中根据需要创建国家和user_type。我该怎么做?
尽管@Lewis 提供的答案是正确的,但对我不起作用。
以下解决方案对我有用。
@admin.register(User)
class UserAdmin(AuthUserAdmin):
fieldsets = AuthUserAdmin.fieldsets + (
(None, {'fields': ('user_type', 'country')}),
)
add_form = MyUserCreationForm
def get_form(self, request, obj=None, **kwargs):
form = super(UserAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['user_type'].required = True
form.base_fields['country'].required = True
return form
我需要根据需要在 ModelAdmin class 的字段集变量中创建一些字段,以便如果未在表单中选择这些字段,用户将无法创建或更新用户实例。我该怎么做?
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = User
class MyUserCreationForm(UserCreationForm):
error_message = UserCreationForm.error_messages.update({
'duplicate_username': 'This username has already been taken.'
})
class Meta(UserCreationForm.Meta):
model = User
def clean_username(self):
username = self.cleaned_data["username"]
try:
User.objects.get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate_username'])
@admin.register(User)
class UserAdmin(AuthUserAdmin):
fieldsets = AuthUserAdmin.fieldsets + (
(None, {'fields': ('user_type', 'country')}),
)
add_form = MyUserCreationForm
这里我想在管理面板中根据需要创建国家和user_type。我该怎么做?
尽管@Lewis 提供的答案是正确的,但对我不起作用。 以下解决方案对我有用。
@admin.register(User)
class UserAdmin(AuthUserAdmin):
fieldsets = AuthUserAdmin.fieldsets + (
(None, {'fields': ('user_type', 'country')}),
)
add_form = MyUserCreationForm
def get_form(self, request, obj=None, **kwargs):
form = super(UserAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['user_type'].required = True
form.base_fields['country'].required = True
return form