動的なformを作る1 - ModelChoiceField利用編
仕様
- あるmodelクラスのデータをコンボボックスで表示する
- ログインしたユーザの権限により動的にデータを表示する。
ユーザ
表示するmodelクラスはUserとし、以下のデータがあるものとします。
formを作成
まずは、Userクラスを使ったコンボボックスのformを作成してみます。
forms.py
from django import forms
from django.contrib.auth.models import User
class UserForm(forms.Form):
choiceuser = forms.ModelChoiceField(queryset = User.objects.all())
実行した結果は以下の通りです。
ModelChoiceFieldを使ったform
forms.py
from django import forms
from dhango.contrib.auth.models import User
class UserForm(forms.Form):
choiceuser= forms.ModelChoiceField(queryset = User.objects.none())
def __init__(self, user, *args, **kwargs):
super(user, self).__init__(*args, **kwargs)
if user.is_superuser:
self.field['choiceuser'].queryset = User.objects.all()
else:
self.field['choiceuser'].queryset = User.objects.filter(is_staff = False)
実行した結果は以下の通りです。

