背景
私は空白に設定されている2つのフィールドを持つモデルがあります:django.forms.CharFieldに「空白」がありませんが、django.db.models.CharFieldにはなぜ存在しますか?
class News(models.Model):
title = models.CharField(max_length = 50, blank = True)
info = models.TextField(blank = True)
事は、私は、フォームが構築されるときに動的にmax_length
を設定したいということですので、私はカスタムフォームを持っています:
class NewsForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewsForm, self).__init__(*args, **kwargs)
title_max_length = 20
info_max_length = 100
self.fields["title"] = forms.CharField(max_length = title_max_length)
self.fields["info"] = forms.CharField(
widget = forms.Textarea,
validators = [
MaxLengthValidator(info_max_length)
]
)
注:これら2つの長さの値は、実際にデータベースからフェッチされ、私は、例を短く保つためにそのコードを含めるしないことを選択しました。
問題
私はそれらのカスタムを使用していblank
オプションは無視/上書きされますフィールド。
私はちょうどこのように、既存のフィールドにMAX_LENGTH、ウィジェットとバリデータを追加してみました:
class NewsForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewsForm, self).__init__(*args, **kwargs)
title_max_length = 20
info_max_length = 100
self.fields["title"].max_length = title_max_length
self.fields["info"].widget = forms.Textarea
self.fields["info"].validators = [MaxLengthValidator(info_max_length)]
これをやってblank
オプションは動作しますが、ダイナミックMAX_LENGTHは、フォームに適用されていません。
私はジャンゴソースを調べようとしましたが、私はかなり新しくなっていますので、今すぐ取り入れるのは大変です。
これを実現する方法はありますか?
フォームにrequired = Falseパラメータを追加しようとしましたか? –
@AlagappanRamu:いいえ、私はしませんでした。私は非常に "空白"は、私はほとんどのドキュメントでそれを逃した探しに焦点を当てていた。 'CharField'の作成に' required = False'を追加して問題を解決しました。私はそれを受け入れてupvoteことができるように答えとしてあなたのコメントを書く。ありがとうございました! – rzetterberg
回答として追加されました!ありがとう。 –