2016-05-04 4 views
4

ことは些細な問題のように聞こえるが、それは答えるのはそう簡単ではないようだ。Djangoの管理カスタムウィジェットのForeignKey

どのようにジャンゴ管理者のチェックボックスとしてのForeignKeyフィールドを表示し、現在ログインを救いますこのユーザーが管理者のチェックボックスをオンにするたびに

例:

class MyModel(models.Model): 
    ... 
    approved = models.ForeignKey(User) 
    ... 

admin.site.register(MyModel) 

どのように私はチェックボックスとしてapprovedフィールドを表示することができるだろうか?

ありがとうございました!

答えて

0

ModelAdminでget_formメソッドを使用して、フォームをカスタマイズすることができます。

この場合、フィールドウィジェットをチェックボックスに変更し、フォーム検証時に値をrequest.userに設定する必要があります(チェックされている場合)。あなたのform.pyでhttps://docs.djangoproject.com/en/1.9/ref/contrib/admin/

+0

感謝を!そして、あなたはDjangoのフォームのクリーニング方法がこのアプローチをブロックしないと確信していますか? –

+0

このフィールドのクリーンメソッドを実装する必要があるので、それはあなた次第です。 Djangoではありません。 –

0

あなたはそれをカスタマイズすることができます:あなたの答えのための

class YOURMODELForm(forms.ModelForm): 
    approved = forms.ModelChoiceField(queryset=User.objects.order_by('name')) 
0

を参照してください

class MyModelWidget(forms.ModelForm): 
    approved = forms.BooleanField(widget=forms.CheckboxInput()) 

    class Meta: 
     model = MyModel 
admin.site.register(MyModel, MyModelWidget) 

admin.py

に次のように