2011-03-06 5 views
0

は次のようになります。は、DjangoののModelFormに列を挿入する私は小さな調査のアプリとメインモデルを書いて

class countingForm(forms.ModelForm): 
    question1 = forms.ChoiceField() 
    question2 = forms.ChoiceField() 
    question3 = forms.ChoiceField() 

    class Meta: 
     model=survey 
     exclude=['ip_address'] 

を:

class survey(models.Model): 
    ip_address = models.IPAddressField() 
    question1 = models.IntegerField() 
    question2 = models.IntegerField() 
    question3 = models.IntegerField() 

私もこのようになりますのModelFormを持っています私は各フォームを送信する人のIPアドレスを記録したいと思いますが、モデルフォームが戻った後にこれを追加する方法がわかりません。たとえば、これは機能しません:

form.cleaned_data['ip_address']=request.META['REMOTE_ADDR'] 
form.save() 

私はむしろ隠しフィールドとしてIPアドレスを追加したいと思います。提案?

+1

関連性のないメモ - アンケートに3つ以上の質問がある場合は、データモデルが誤っている可能性があります。あなたは、調査に外来キーを持つ 'Question'モデルを持っているほうが良いかもしれません。 –

+0

[Djangoフォームのクリーン()メソッドの複製可能 - クライアントのIPアドレスが必要](0120-17753-03) –

+0

ここで答えが見つかりました:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-a-subset-of-fields-on-the-form – jamida

答えて

3
obj = form.save(commit=False) 
obj.ip_address = request.META['REMOTE_ADDR'] 
obj.save() 

別途メモで、リクエストにREMOTE_ADDRフィールドがない可能性があるので、特定のインストールを確認する必要があります。

関連する問題