テンプレートの一部のフィールドを表示したくないため、検証に合格できないモデル フォームがあります。それらはユーザーにとって重要ではありませんが、モデルの一部であり、それらの値は動的に生成されます。これらのフィールドをフォームで必須にしないように設定するにはどうすればよいですか (それらの値は POST 後に生成されます)、フォームが検証に合格し、モデルで必須になるようにするにはどうすればよいですか?
質問する
101 次
1 に答える
4
モデル インスタンスを使用して、フォームにデータを入力します。の代わりにform = Form()
、保存先のモデルのインスタンスを取得して -- model_object = Model.objects.get(id=27)
-- (またはフェッチすることもできます)、次に を使用しますform = Form(instance=model_object)
。これにより、フィールドにモデル データが入力されます。
値を動的に計算できるようにフィールドを除外する場合は、次の手順を試してください。
class Form(forms.ModelForm):
class Meta:
model = Model
exclude = ('field_name', 'field_name', 'field_name', ...) # the fields you want to exclude
それで:
def View(request):
if request.POST:
form = Form(request.POST)
if form.is_valid():
model_object = form.save(commit=False) # an unsaved model object
model_object.field = some dynamic value
model_object.another_field = some other dynamic value
model_object.save() # save the model, ignore the form
詳細については、以下を参照してください:ビューに保存するときに user_id を設定する - Django
更新:'field_name'
の除外行に引用符を追加しましたForm
于 2013-03-02T16:20:14.573 に答える