2016-08-13 5 views
0

私は以前の回答では解決策が見つかりませんでしたので、クエリーセットによって作成されたフォームフィールドの結果を登録する方法を尋ねます。フォームフィールドのDjango単純クエリーセット

@python_2_unicode_compatible 
class Choice(models.Model): 
    choice_text = models.CharField(max_length=100) 
    def __str__(self): 
     return self.choice_text 


@python_2_unicode_compatible 
class Contatto(models.Model): 
    contatto_choice = models.ForeignKey(Choice, on_delete=models.PROTECT) 
    phone_number = models.CharField(max_length=12) 
    email = models.CharField(max_length=100) 
    text = models.CharField(max_length=250) 
    def __str__(self): 
     return self.email 

class ContactForm(ModelForm): 
    class Meta: 
     model = Contatto 
     fields = ['contatto_choice', 'phone_number','email','text'] 

マイforms.pyは次のとおりです:たぶん私はここに簡単な何か間違ったことをやっているが、私のモデルはどのようにこれまで

class ContactForm(forms.Form): 
    contatto_choice = forms.ModelChoiceField(queryset=Choice.objects.all()) 
    phone_number = forms.CharField(max_length=12) 
    email = forms.CharField(max_length=100) 
    text = forms.CharField(widget=forms.Textarea, max_length=500) 

と私の見解は以下のとおりです。

def contatti(request): 
    if request.method=="POST": 
     form = ContactForm(request.POST) 
     if form.is_valid(): 
      contatto = Contatto() 
      contatto.phone_number = form.cleaned_data['phone_number'] 
      contatto.email = form.cleaned_data['email'] 
      contatto.text = form.cleaned_data['text'] 
      contatto.contatto_choice = form.cleaned_data['contatto_choice'] 
      contatto.save() 
      recipients = ['[email protected]'] 
      send_mail("Contatto Cercaservizi", contatto.phone_number+' '+contatto.email+' '+contatto.text,contatto.email, recipients) 
      return HttpResponseRedirect('/') 
    else: 
     form = ContactForm() 
     return render(request, 'form.html', {'form': form}) 

の眺め送信されたフォームは、contatto_choiceが選択のインスタンスでなければならないという事実について不平を言う。私はこれを解決する方法についてのチュートリアルを見つけることができない。もしあなたが助けられるなら、それは評価されるでしょう。

+1

他のフォームを必要としないのだろうか? –

+0

私はこれをやり遂げる方法でした... – softwareplay

+0

どうやって違うのですか? – softwareplay

答えて

1

編集あなたのContactForm

class ContactForm(ModelForm):  
    contatto_choice = forms.ModelChoiceField(queryset=Choice.objects.all()) 
    class Meta: 
     model = Contatto 
     fields = ['contatto_choice', 'phone_number','email','text'] 

と次の2つの異なる `ContactForm`sを持っていないのはなぜ

関連する問題