Django Admin - 为内联调用 change_view

Django Admin - call change_view for inline

我目前正在用 Django 开发一个应用程序。

在Admin部分,我想在修改视图中排除"groups"部分,使用"change_view"方法

这是返回的错误:

信息:我有一个扩展用户table。此外,错误表明我可以尝试使用 "user_permissions",但在测试后它再次告诉我可以使用 "groups" ... 所以这不是命名问题

代码如下:

# ADMIN #
class UserExtendInline(admin.StackedInline):
    model = UserExtend
    max_num = 1
    fk_name = 'user'
    can_delete = False
    fields = ('user','offer', 'valid_payments')


class AccountsUserAdmin(UserAdmin):
    inlines = (UserExtendInline,)
    list_display = ('email','first_name','last_name','Formation_Souscrite','last_login','Paiement_Valide','is_active')
    readonly_fields = ('email', 'last_login', 'date_joined')
    def get_inline_instances(self, request, obj=None):
        if not obj:
            return list()
        return super(AccountsUserAdmin, self).get_inline_instances(request, obj)

    def Formation_Souscrite(self, obj):
        user_extend =  UserExtend.objects.filter(user=obj).prefetch_related('offer')
        user_extend = user_extend[0]
        if not user_extend.offer is None:
            return user_extend.offer.name
        else:
            return "Aucune"

    def Paiement_Valide(self, obj):
        return UserExtend.objects.get(user=obj).valid_payments

    def change_view(self, request, object_id, extra_context=None):       
        self.exclude = ['groups']
        return super(AccountsUserAdmin, self).change_view(request, object_id, extra_context)

    Paiement_Valide.boolean = True

# unregister old user admin
admin.site.unregister(User)

# register new user admin that includes a UserProfile
admin.site.register(User, AccountsUserAdmin)
admin.site.unregister(Group)

感谢您的回复

编辑

UserExtend 模型:

class UserExtend(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,blank=False,null=False)
    offer = models.ForeignKey(Offer, on_delete=models.PROTECT,null=True)
    valid_payments = models.BooleanField(default=False,verbose_name="Paiement Valide")
    stripe_id=models.CharField(max_length=150,default="",verbose_name="Stripe ID Client")
    class Meta:
        verbose_name = "Extension d'un Utilisateur"
        verbose_name_plural = "Extensions des Utilisateurs"

这是

的副本

因此,您应该覆盖没有 'groups' 的字段集。原始字段集定义在这里:https://github.com/django/django/blob/0352a44dd61c19bebf0c0b305dbbc3f710ff9945/django/contrib/auth/admin.py#L48

只需省略覆盖定义中的 'groups'。