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'。
我目前正在用 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'。