0

Моего model.pyМоя форма не показывают ошибки и входные значения после проверки

class VehicleInquiry(TimeStampedModel): 
    inquiry_status = models.PositiveSmallIntegerField(_("inquiry status"), choices=INQUIRY_STATUS_CHOICES, default=1) 
    full_name = models.CharField(_("full name"), max_length=100) 
    address = models.CharField(_("address"), max_length=200) 
    ---- other fields ---- 

Моего хрустящие form.py:

class VehicleInquiryForm(forms.ModelForm): 
    --- overridden form fields ---  

class Meta: 
    model = VehicleInquiry 
    fields = ('full_name', 'email') 


def __init__(self, request=None, stock_product=None, *args, **kwargs): 
    super(VehicleInquiryForm, self).__init__(*args, **kwargs) 
    self.fields['is_subscribed'].label = _("Keep me updated") 
    self.helper = FormHelper() 
    self.helper.template_pack = "bootstrap3" 
    self.helper.form_method = "post" 
    self.helper.form_id = "vehicle-shipping-form" 
    self.initial['insurance'] = True 
    self.helper.add_input(
     Submit('inquiry', _('Inquiry'), css_class='btn btn-default',) 
    ) 
    self.helper.form_method = 'post' 
    self.helper.layout = Layout(
     Fieldset(
     _("1. Choose Your Final Destination"), 
     Div(
      Field('country2', css_class="order-select-country"), 
     ), 

      --- other fields ---     
     ) 

Моего ОЦК view.py:

class VehicleStockDetailView(TemplateView): 
    model = StockProduct 
    template_name = "site/product/vehicle-detail.html" 
    template_name_done = "site/contact/contact-us-done.html" 
    template_name_done_email = "site/contact/emails/contact-us-done.html" 

def post(self, request, slug, *args, **kwargs): 
    form = VehicleInquiryForm(request.POST) 
    ip="" 
    if form.is_valid():    
     form.save() 
     return render(request, self.template_name_done, { 
      'full_name': request.POST['full_name'], 
      'email': request.POST['email'], 
     }) 


    vehicle = get_object_or_404(VehicleStock, slug=slug) 
    return render(request, self.template_name, { 
     'product': vehicle, 
     'form': form 
    }) 

def get(self, request, slug, *args, **kwargs): 
    vehicle = get_object_or_404(VehicleStock, slug=slug) 
    form = VehicleInquiryForm() 
    return render(request, self.template_name, { 
     'product': vehicle, 
     'form': form 
    }) 

Форма загружается ОК как GET, но когда я нажимаю «Запрос» в качестве почтового запроса, он не показывает ни ошибок, ни введенных значений. В моем шаблоне я загружаю форму как {% crispy form%}. Нужна помощь.

+0

Почему не слишком просто использовать вид формы для этого? –

+0

Потому что я расширяюсь из другого представления BaseView, который использовал TemplateView. В Base View Я определяю мета-файлы. Вот почему я не люблю изменять все представления в FormView –

ответ

0

Вы изменили подпись функции init формы, чтобы первые позиционные аргументы были запрошены и stock_product. Вам следует избегать этого - как правило, я бы рекомендовал вместо этого использовать kwargs, но в этом случае вы должны удалить их полностью, так как вы не используете эти значения в этом методе.

Также обратите внимание, что ваш код будет проще, если вы использовали FormView, который позаботится о вас почти для всей этой логики.

+0

Спасибо, что я обычно использую Stock_product. Но для упрощения кода я удалил несколько полей, которые не важны для вопроса. В любом случае, я буду следовать вашим советам и попытаться использовать FormView. Спасибо. Я дам результаты позже. –

+0

Как вы посоветовали, я удалил запрос и Stock_product от __init__. Теперь это работает. Теперь я использую kwrgs. Thx вы спасли мое время, я застрял здесь и прочитал много статей. Но это было главным образом о FBV или FormView. –