Quiero eliminar el campo 'grupos' del UserChangeForm incorporado y agregar mi propio campo "Rol". ¿Cómo manejar eso? Creé mi clase que hereda de UserChangeForm y fui a eliminar de alguna manera pero sin cambios.
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)Puede heredar el Meta del UserChangeForm y reescribir el campo de exclusión para exclude los groups :
class CustomUserChangeForm(UserChangeForm): class Meta( UserChangeForm.Meta ): fields = None exclude = ('groups',)Para el sitio de administración puede trabajar con:
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 )Eliminé UserChangeForm y defino conjuntos de campos en CustomUseAdmin de esta manera: https://github.com/django/django/blob/main/django/contrib/auth/admin.py#L45
Y funciona correctamente, pero no puedo agregar mi modelo de 'Rol' aquí
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')Campo(s) desconocido(s) (user_role) especificados para Usuario. Comprobar campos/conjuntos de campos/excluir atributos de la clase 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'