/ / ModelFormフィールドの一部の選択肢のみを表示-django、django-models

ModelFormフィールドの選択肢のみを表示する - django、django-models

次のモデルがあるとします

class MyChoiceModel(models.Model):
mychoices = (("ChoiceA", "ChoiceA"), ("ChoiceB", "ChoiceB"))

そして次のModelForm

class MyChoiceModelForm(forms.ModelForm):
#...
class Meta:
model = MyChoiceModel
fields = ("mychoices", )

これで、ユーザーはすべてのタイプの選択肢を選択できます(ChoiceA そして ChoiceB)。 私が今欲しいのは、特定の選択値が表示されないことです。

利用可能な選択肢をどのようにフィルタリングできますか mychoices たとえば ChoiceA ユーザーが選択可能であり、他の状況ではのみ ChoiceB

回答:

回答№1は0

これを行うには多くの方法があります:これが私が持っている方法です

def CustomChoiceList():
# return custom choices

class MyChoiceModelForm(forms.ModelForm):
class Meta:
widgets = { "mychoices": CustomChoiceList() }

より詳細な制御が必要な場合、またはモデルにアクセスする必要がある場合は、作成を検討してください。 forms.ModelChoiceField)

例えば:

class CustomChoices(forms.ModelChoiceField):
def label_from_instance(self, obj):
# return some obj.title, or whatever in your object as the label to show

次にModelFormで

mychoices = CustomChoices(required=True, queryset=YourModelYouWant.objects.filter(...))