2011-02-08 8 views
2

Authorフィールドを変更するには、自分のサイトの特定のフォームを表示するスタッフを有効にしたいが、is_staffがfalse現在のUserである必要があります。Djangoのスタッフにのみフォームのユーザーフィールドを表示する方法

ので、例えば、私はこのような、ArticleFormを持っている:

class ArticleForm(ModelForm): 

    class Meta: 
     model = Article 
     fields = ('user', 'title', 'text') 

どのように私は動的にuserフィールドがUserの状況に基づいて、表示するかどうかを調整することができますか?

カスタム__init__ファンクションをuserにパラメータとして使用する場合、そのフィールドが表示されるかどうかを変更するにはどうすればよいですか?

答えて

3
class ArticleForm(ModelForm): 

    class Meta: 
     model = Article 
     fields = ('user', 'title', 'text') 

    def __init__(self, *args, **kwargs): 
     user = kwargs.pop('user', None) 
     super(ArticleForm, self).__init__(*args, **kwargs) 
     if not user.is_superuser: 
      del self.fields['user'] 
+0

ああ、それほど簡単です。ありがとう:) –

+0

ええ、これは私のために働いていない "グローバル名 'ユーザー'は定義されていません"と言う! – Hamza