0
def get_form(self, request, obj=None, **kwargs):
    if request.user.is_superuser:   
        self.exclude=[]
    else:
        self.fields=['employer_verified']
    return super(EmployerAdmin, self).get_form(request, obj, **kwargs)

get_form()メソッドをオーバーライドして、ユーザーに応じてビューをカスタマイズするこのコードがあります。スーパーユーザーがログインするとうまく機能しますが、問題は、スタッフがログインしてからスーパーユーザーがログインした場合にのみemployer_verifiedが表示されることです。問題は、「雇用者が確認した」と現在等しいフィールドから何も除外されていないことです。

4

1 に答える 1

1

メソッドに設定self.excludeしないでくださいget_form。スレッドセーフではありません。代わりに、2 つの異なるフォーム クラスを定義し、に応じて正しいものを返すことができますuser.is_superuser

class EmployerForm(forms.ModelForm):
    class Meta:
        model = Employer
        fields = ['employer_verified',]

class EmployerSuperUserForm(forms.ModelForm):
    class Meta:
        model = Employer

def get_form(self, request, obj=None, **kwargs):
    if request.user.is_superuser:   
        return EmployerSuperUserForm
    else:
        return EmployerForm
        self.fields=['employer_verified']
于 2012-05-22T13:29:07.423 に答える