簡體   English   中英

在 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
    

在這里,我想在管理面板中根據需要制作國家和用戶類型。 我怎樣才能做到這一點?

盡管@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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM