2016-08-13 1 views
0

В предыдущих ответах я не мог найти решения, поэтому я спрашиваю, как зарегистрировать результат поля формы, созданного набором запросов. Может быть, я делаю неправильно что-то простое, как здесь когда моя модель являются:Django simple queryset в поле формы

@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

Почему есть два различных 'ContactForm's? –

+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'] 

и вам не нужны другие формы

Смежные вопросы