Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

463
Visualizações
Customizing UserChangeForm in django

I want to delete the 'groups' field from the build-in UserChangeForm and add my own "Role' field. How to handle that? I created my class which inherits from UserChangeForm and went to somehow delete but no change.

class CustomUserChangeForm(UserChangeForm):
    def __init__(self, *args, **kwargs):
        super(CustomUserChangeForm, self).__init__(*args, **kwargs)
        print(self.fields)

    class Meta(UserChangeForm.Meta):
        fields = ()
        exclude = ('groups',)


class CustomUserAdmin(UserAdmin):
    change_form = CustomUserChangeForm
    def __init__(self, *args, **kwargs):
        super(UserAdmin, self).__init__(*args, **kwargs)
        UserAdmin.list_display = ('username', 'is_active', 'email',
                                  'date_joined', 'user_role', 'is_staff', 'is_superuser')


class RoleAdmin(admin.ModelAdmin):
    fields = ('name', 'role_permissions')


admin.site.unregister(Group)
admin.site.unregister(User)
admin.site.register(Role, RoleAdmin)
admin.site.register(User, CustomUserAdmin)


over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

You can inherit the Meta of the UserChangeForm and rewrite the exclude field to exclude the groups:

class CustomUserChangeForm(UserChangeForm):
    
    class Meta(UserChangeForm.Meta):
        fields = None
        exclude = ('groups',)

For the admin site you can work with:

from django.contrib.auth import get_user_model

class CustomUserAdmin(UserAdmin):
    form = CustomUserChangeForm
    list_display = ('username', 'is_active', 'email', 'date_joined',
                    'user_role', 'is_staff', 'is_superuser')

User = get_user_model()

admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
over 4 years ago · Santiago Trujillo Relatório

0

I deleted UserChangeForm, and I define fieldsets in CustomUseAdmin like this: https://github.com/django/django/blob/main/django/contrib/auth/admin.py#L45

And works correctly, but I can't add my 'Role' model here

class CustomUserAdmin(UserAdmin):
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        (_('Permissions'), {
            'fields': ('is_active', 'is_staff', 'is_superuser', 'user_role', 'user_permissions'),
        }),
        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )
    
    def __init__(self, *args, **kwargs):
        super(UserAdmin, self).__init__(*args, **kwargs)
        UserAdmin.list_display = ('username', 'is_active', 'email',
                                  'date_joined', 'user_role', 'is_staff', 'is_superuser')

Unknown field(s) (user_role) specified for User. Check fields/fieldsets/exclude attributes of class CustomUserAdmin.

class Role(models.Model):
    name = models.CharField(max_length=100, unique=True)
    user = models.OneToOneField(User, related_name="user_role", on_delete=models.CASCADE)
    role_permissions = models.ManyToManyField(Permission, related_name="role_permissions")
    
    class Meta:
        app_label = 'auth'
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda