1

ログに記録されたユーザーがスーパーユーザーでない場合は、DjangoAdminのフォームから一部のフィールドを非表示にする必要があります。これは私が思いついたものです:

    def get_form(self, request, obj=None, **kwargs):
        form = super(RestauranteAdmin, self).get_form(request, obj, **kwargs)
        if not request.user.is_superuser:
            form.base_fields.pop('approved')
            form.base_fields.pop('day_of_the_week')
            form.base_fields.pop('photo')
        form.label_suffix = ''
        return form

これは確かに必要なフィールドを非表示にしますが、ユーザーがスーパーユーザーでない場合、何らかの理由で管理者は私のインラインのレンダリングも停止します。私が見る限り、この方法はインラインとは何の関係もないはずです。私は何かが足りないのですか?

ありがとう、

4

1 に答える 1

4

親メソッドを呼び出す前に除外するだけです

それが役に立てば幸い

def get_form(self, request, obj=None, **kwargs):
    if not request.user.is_superuser:              
       self.exclude = []
    else:    
       self.exclude = ['approved','day_of_the_week','photo']

    return super(RestauranteAdmin, self).get_form(request, obj, **kwargs)
于 2012-11-01T04:02:15.250 に答える