1

次のように定義された形式の選択フィールドがあります

REFERRAL_CHOICES = (
    (None, 'Please choose'),
    ('search', 'From a search engine'),
    ('social', 'From a social network'),
)
referral_source = forms.ChoiceField(
    choices=REFERRAL_CHOICES
)

clean_company_sizeフィールドが適切な値に設定されているかどうかをチェックする関数もあります。

def clean_company_size(self):
    company_size = self.cleaned_data.get('company_size', None)
    if company_size is None:
        raise ValidationError('Please select a company size')

    return company_size

or company_size == 'None'上記のNoneチェックに条件を追加すると、すべて正常に機能します。ただし、None値が文字列にキャストされる理由に興味があります。選択フィールドでデフォルトのプロンプトを実行し、そのフィールドを必須にする最良の方法は何ですか?

4

1 に答える 1

1

すべてPOSTGET変数、およびSelectHTMLタグ値は、最初は文字列として送信されます。Djangointは、モデルから差し引くことができる場合、それらを-say-に変換します。あなたの場合、「None」文字列と「None」オブジェクトを区別することはできません。どちらも可能な値です。の代わりに「」を使用することをお勧めNoneしますREFERRAL_CHOICHES

于 2013-03-26T22:52:02.643 に答える