私は、異なる権限を持つユーザーが異なることを行うことができるモデルの動的フォームを作成しようとしています。私が望むのは、以下のコードが適切に機能するため、非スーパーユーザーは 'Merchant'ブロックのフィールドを編集できないということです。Djangoフィールドセットで除外を使用する
class CategoryModelAdmin(LWModelAdmin):
fieldsets = (
('Merchant', {'fields': ('merchant',) }),
('Category', { 'fields': ('name', 'parent',) }),
)
def get_form(self,request,obj=None, **kwargs):
if request.user.is_superuser:
self.exclude = []
else:
self.exclude = ['Merchant']
return super(CategoryModelAdmin,self).get_form(request, obj=None, **kwargs)
私は以下のコードを経由してその効果を達成することができますが、私は実際にそれを行うには「正しい」方法を探していますし、除外する使用して移動するための方法ですが、私が見えることはできませんようにそれは感じています私が何を試みてもそれを正しく得るために。
class CategoryModelAdmin(LWModelAdmin):
declared_fieldsets = None
admin_fieldsets = (
(None, {'fields': ('merchant',) }),
('Category', { 'fields': ('name', 'parent',) }),
)
restricted_fieldsets = (
('Category', { 'fields': ('name', 'parent',) }),
)
def get_fieldsets(self, request, obj=None):
if request.user.is_superuser:
fieldsets = self.admin_fieldsets
else:
fieldsets = self.restricted_fieldsets
return LWModelAdmin.fieldsets + fieldsets
def get_form(self, request, obj=None, **kwargs):
self.declared_fieldsets = self.get_fieldsets(request, obj)
return super(self.__class__, self).get_form(request, obj)