2012-08-01 3 views
0

데이터베이스에 주문한 항목을 저장하지 않는 주문 양식이 있습니다. 문의 양식을 저장하는 중입니다. 나는 내 견해에서 내가 뭘 잘못하고 있었는지 찾지 못하고 찾았다. 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다!클래스 기반보기를 사용하여 모든 양식이 내 데이터베이스에 저장되지 않습니다

조회수 :

class OrderFormView(CreateView): 
    model = Contact 
    form_class = ContactForm 
    template_name = 'orderform.html' 
    success_url = 'thank-you' 

    def get_context_data(self, **kwargs): 
     context = super(OrderFormView, self).get_context_data(**kwargs) 
     formsets = dict(
      letterhead_formset=LetterHeadFormSet(prefix='letterhead'), 
      windowenv_formset=WindowEnvFormSet(prefix='windowenv'), 
      numbertenenv_formset=NumberTenEnvFormSet(prefix='numbertenenv'), 
      ninebytwelveenv_formset=NineByTwelveEnvFormSet(prefix='ninebytwelveenv'), 
      tenbythirteenenv_formset=TenByThirteenEnvFormSet(prefix='tenbythirteenenv'), 
      businesscard_formset=BusinessCardFormSet(prefix='businesscard'), 
     ) 
     context.update({ 
      'letterhead_form': LetterHeadForm, 
      'windowenv_form': WindowEnvForm, 
      'numbertenenv_form': NumberTenEnvForm, 
      'ninebytwelveenv_form': NineByTwelveEnvForm, 
      'tenbythirteenenv_form': TenByThirteenEnvForm, 
      'businesscard_form': BusinessCardForm, 
      'rushorder_form': RushOrderForm, 
      'ordernote_form': OrderNoteForm, 
      }) 
     context.update(formsets.items()) 
     return context 

    def form_valid(self, form): 
     if form.is_valid(): 
      data = form.cleaned_data 
      email = OrderFormNotification(to=[settings.NO_REPLY_EMAIL_ADDRESS, ], 
       extra_context=data) 
      email.send() 
      form.save() 


     return super(OrderFormView, self).form_valid(form) 

양식 클래스 :

class ContactForm(forms.ModelForm): 
    address = forms.ChoiceField(required = True, widget=RadioSelect(),  choices=ADDRESS_CHOICES,) 
    class Meta: 
     model = Contact 


class LetterHeadForm(forms.ModelForm): 
    address = forms.ChoiceField(required = False, widget=RadioSelect(), choices=ADDRESS_CHOICES) 
    class Meta: 
     model = LetterHead 
     widgets = { 
      'contact': forms.HiddenInput, 
      'quantity': forms.Select(choices=QUANTITY_CHOICES), 
     } 


class WindowEnvForm(forms.ModelForm): 
    address = forms.ChoiceField(required = False, widget=RadioSelect(), choices=ADDRESS_CHOICES) 
    class Meta: 
     model = WindowEnv 
     widgets = { 
      'contact': forms.HiddenInput, 
      'quantity': forms.Select(choices=QUANTITY_CHOICES), 
     } 


class NumberTenEnvForm(forms.ModelForm): 
    address = forms.ChoiceField(required = False, widget=RadioSelect(), choices=ADDRESS_CHOICES) 
    class Meta: 
     model = NumberTenEnv 
     widgets = { 
      'contact': forms.HiddenInput, 
      'quantity': forms.Select(choices=QUANTITY_CHOICES), 
     } 


class NineByTwelveEnvForm(forms.ModelForm): 
    address = forms.ChoiceField(required = False, widget=RadioSelect(), choices=ADDRESS_CHOICES) 
    class Meta: 
     model = NineByTwelveEnv 
     widgets = { 
      'contact': forms.HiddenInput, 
      'quantity': forms.Select(choices=QUANTITY_CHOICES), 
     } 


class TenByThirteenEnvForm(forms.ModelForm): 
    address = forms.ChoiceField(required = False, widget=RadioSelect(), choices=ADDRESS_CHOICES) 
    class Meta: 
     model = TenByThirteenEnv 
     widgets = { 
      'contact': forms.HiddenInput, 
      'quantity': forms.Select(choices=QUANTITY_CHOICES), 
     } 


class BusinessCardForm(forms.ModelForm): 
    print_choices = forms.ChoiceField(required = True, widget=RadioSelect(), choices=PRINT_CHOICES) 
    card_styles = forms.ChoiceField(required = True, widget=RadioSelect(), choices=CARD_CHOICES) 
    card_mailing_address = forms.ChoiceField(required = True, widget=RadioSelect(), choices=ADDRESS_CHOICES) 
    class Meta: 
     model = BusinessCard 
     widgets = { 
      'contact': forms.HiddenInput, 
     } 


class RushOrderForm(forms.ModelForm): 
    class Meta: 
     model = RushOrder 
     widgets = { 
      'contact': forms.HiddenInput, 
      'rush_order': forms.CheckboxInput, 
      'in_hand_date': forms.extras.SelectDateWidget 
     } 


class OrderNoteForm(forms.ModelForm): 
    class Meta: 
     model = OrderNote 
     widgets = { 
      'contact': forms.HiddenInput, 
      'add_note': forms.CheckboxInput, 
      'notes': forms.Textarea 
     } 


LetterHeadFormSet = modelformset_factory(LetterHead, 
    form=LetterHeadForm, extra=2, max_num=2) 
WindowEnvFormSet = modelformset_factory(WindowEnv, 
    form=WindowEnvForm, extra=2, max_num=2) 
NumberTenEnvFormSet = modelformset_factory(NumberTenEnv, 
    form=NumberTenEnvForm, extra=2, max_num=2) 
NineByTwelveEnvFormSet = modelformset_factory(NineByTwelveEnv, 
    form=NineByTwelveEnvForm, extra=2, max_num=2) 
TenByThirteenEnvFormSet = modelformset_factory(TenByThirteenEnv, 
    form=TenByThirteenEnvForm, extra=2, max_num=2) 
BusinessCardFormSet = modelformset_factory(BusinessCard, 
    form=BusinessCardForm, extra=2, max_num=2) 

모델 :

PRINT_CHOICES = (
    ('exact reprint', 'Exact Reprint'), 
    ('reprint with changes', 'Reprint With Changes'), 
    ('new', 'New') 
) 

QUANTITY_CHOICES = (
    ('1000', '1000'), 
    ('2500', '2500'), 
    ('5000', '5000') 
) 

CARD_QUANTITY_CHOICES = (
    ('250', '250'), 
    ('500', '500'), 
    ('1000', '1000') 
) 

CARD_CHOICES = (
    ('chef/black', 'Chef/Black'), 
    ('executive/red', 'Executive/Red') 
) 

ADDRESS_CHOICES = (
    ('eisenhower', 'Eisenhower'), 
    ('wheeler', 'Wheeler'), 
) 


class Contact(models.Model): 
    first_name = models.CharField(max_length=100, help_text="First Name") 
    last_name = models.CharField(max_length=100, help_text="Last Name") 
    email_address = models.EmailField(max_length=275) 
    address = models.CharField(max_length=10, choices=ADDRESS_CHOICES) 

    def __unicode__(self): 
     return "%s %s" % (self.first_name, self.last_name) 


class BaseStationary(models.Model): 
    contact = models.ForeignKey(Contact, related_name='%(class)s_related') 
    address = models.CharField(max_length=10, choices=ADDRESS_CHOICES) 
    quantity = models.CharField(max_length=4, choices=QUANTITY_CHOICES) 

    class Meta: 
     abstract = True 


class LetterHead(BaseStationary): 
    pass 


class WindowEnv(BaseStationary): 
    pass 


class NumberTenEnv(BaseStationary): 
    pass 


class NineByTwelveEnv(BaseStationary): 
    pass 


class TenByThirteenEnv(BaseStationary): 
    pass 


class BusinessCard(models.Model): 
    contact = models.ForeignKey(Contact, related_name='businesscards') 
    card_first_name = models.CharField(max_length=100) 
    card_last_name = models.CharField(max_length=100) 
    title = models.CharField(max_length=100) 
    print_choices = models.CharField(max_length=19, choices=PRINT_CHOICES) 
    card_styles = models.CharField(max_length=12, choices=CARD_CHOICES) 
    card_email_address = models.EmailField(max_length=275) 
    office_phone_number = PhoneNumberField(_('main office phone number'), 
     blank=True, null=True) 
    toll_free_number = PhoneNumberField(_('toll free number'), 
    blank=True, null=True) 
    mobile_number = PhoneNumberField(_('mobile phone number'), 
     blank=True, null=True) 
    fax_number = PhoneNumberField(_('main office fax'), 
     blank=True, null=True) 
    card_mailing_address = models.CharField(max_length=10, 
     choices=ADDRESS_CHOICES) 
    card_quantity = models.CharField(max_length=3, 
    choices=CARD_QUANTITY_CHOICES) 


class RushOrder(models.Model): 
    contact = models.ForeignKey(Contact, related_name='rushorders') 
    rush_order = models.BooleanField() 
    in_hand_date = models.DateField(blank=True, null=True) 


class OrderNote(models.Model): 
    contact = models.ForeignKey(Contact, related_name='ordernotes') 
    add_note = models.BooleanField() 
    notes = models.TextField() 
+0

양식 클래스로이 질문을 업데이트해야합니다. –

+0

Ooops, 깜빡했다. 됐어. Thanks @ BurhanKhalid – tjoenz

+0

@urbanrunic 만약 당신의 views.py 들여 쓰기 오류가 있거나 그냥 복사/붙여 넣기 오류 –

답변

0

form_valid 당신이 그것을에 추가 한 코드 만에 의해 지정된 실제 양식을 처리 form_class. 각 formset을 수동으로 확인하고 저장해야합니다.

+0

고마워요! http://haineault.com/blog/155/에 대한이 게시물을 찾았습니다. – tjoenz

관련 문제