38

次のようなフォームがあるとします。

フォーム.py

class CreateASomethingForm(ModelForm):
    class Meta:
        model = Something
        fields = ['field2', 'field3', 'field4']

フォームにこれら 3 つのフィールドが必要です。ただし、私のSomethingクラスにもありますfield1。私の質問は、データの収集にfield1を使用していない場合、 にデータを追加するにはどうすればよいかということですModelForm。私はこのようなことを試みましたが、うまくいかず、これを解決する適切な方法がわかりません:

ビュー.py

def create_something_view(request):
    if (request.method == 'POST'):
        # Create an object of the form based on POST data
        obj = CreateASomething(request.POST)
        # ** Add data into the blank field1 ** (Throwing an error)
        obj['field1'] = request.user
        # ... validate, save, then redirect 

私が受け取るエラーは次のとおりです。

TypeError: 'CreateAClassForm' object does not support item assignment

ModelFormDjangoでは、保存する前にデータをオブジェクトに割り当てる適切な方法は何ですか?

4

4 に答える 4

7

場合によっては、フィールドが必須である場合があります。つまり、form.is_valid() を超えることはできません。その場合、すべてのフィールドを含む dict オブジェクトをフォームに渡すことができます。

   if request.method == 'POST':
       data = {
        'fields1': request.user,
        'fields2': additional_data,
       }
       form = CreateASomethingForm(data)

    if form.is_valid():
        form.commit(save)
于 2015-06-15T16:02:27.250 に答える