2

テンプレートの一部のフィールドを表示したくないため、検証に合格できないモデル フォームがあります。それらはユーザーにとって重要ではありませんが、モデルの一部であり、それらの値は動的に生成されます。これらのフィールドをフォームで必須にしないように設定するにはどうすればよいですか (それらの値は POST 後に生成されます)、フォームが検証に合格し、モデルで必須になるようにするにはどうすればよいですか?

4

1 に答える 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 に答える