1

Django に似たフォームの選択肢フィールドの下にある既存の valuelistqueryset に空の選択肢の値を追加する必要がありますmodelchoicefield("-------------")。誰でもこれで私を助けることができますか?

hardness = forms.ModelChoiceField(queryset=Description.objects.filter(variable="hardness", paradigm='206209').values_list('dvalue', flat=True).distinct().order_by('dvalue'))

@jghyllebert お返事ありがとうございます。ただし、この場合は、modelchoicefield を choicefield に変換する必要があります。の解決策が必要ですchoicefield。わかりにくかったらすみません。選択フィールドで試しempty_labelてみましたが、フォームがエラーになります。empty_value

rimplan = forms.ChoiceField(
    required=False, 
    empty_value = '---',
    choices=Description.objects.filter(
        variable="rimplan", 
        paradigm='206209').values_list(
            'dvalue', 
            flat=True).distinct().order_by('dvalue')) 

したがって、私は完全にうまく機能するこのソリューションを実装しました。

EXTSURCOLOR_DESCRIPTIONS = Description.objects.filter(
    variable="exteriorsurfacecolor", 
    paradigm='206209') 

EXTSURCOLOR_CHOICES = [('', '---')] 

EXTSURCOLOR_CHOICES.extend(
    EXTSURCOLOR_DESCRIPTIONS.values_list(
        "dvalue", 
        "dvalue").distinct().order_by('dvalue')) 

exteriorsurfacecolor = forms.ChoiceField(choices = EXTSURCOLOR_CHOICES) 

そこにもっと良い解決策があるかどうか知りたかっただけです。

4

1 に答える 1

0

empty_label空の選択オプションにカスタム値を設定するために使用できるオプションがあります。

hardness = forms.ModelChoiceField(
    queryset=Description.objects.filter(variable="hardness", paradigm='206209').values_list('dvalue', flat=True).distinct().order_by('dvalue'),
    empty_label='Not applicable', #for instance
    required=False
)

ドキュメントに従ってください:

ModelChoiceField が必須で、デフォルトの初期値がある場合、(empty_label の値に関係なく) 空の選択肢は作成されないことに注意してください。

于 2013-06-26T22:01:14.237 に答える