@alexto13

Как правильно передать значения с формы в шаблон?

Здравствуйте,помогите пожалуйста разобраться с значениями в html.После нажатия на кнопку отправить,ничего не летит на почту с select и option

<form method="post" action="">
        {% csrf_token %}
        {{ form.name }}
        {{ form.adress }}
    {{ form.phone }}
        <select>
            {% for method in form.method %}
                <option value="{{ method.id }}">{{ method }}</option>
            {% endfor %}
        </select>
        <select>
            {% for color in form.color %}

                <option value="{{ color.id }}">{{ color }}</option>

            {% endfor %}

        </select>

        <select>

            {% for dyson in form.dyson %}
                <option value="{{ dyson.id }}">{{ dyson }}</option>
            {% endfor %}
        </select>


        <button type="submit">Отправить</button>
    </form>


Как только ставлю обычную форму,то всё долетает
<form action="" method="post">

    {% csrf_token %}
        {{ form.name }}
        {{ form.adress }}
        {{ form.phone }}
    {{ form.dyson }}
    {{ form.color }}
    {{ form.method }}
    <button type="submit">Отправить</button>


models :

class SparePartAppointment(models.Model):
    name = models.CharField('Полное имя', max_length=256)
    phone = models.CharField('Телефон', max_length=26)
    dyson =  models.ForeignKey(verbose_name='Дайсон', to='Dyson', on_delete=models.RESTRICT,default='')
    color = models.ForeignKey(verbose_name='Цвет', to='Color', on_delete=models.RESTRICT,default='')
    method =  models.ForeignKey(verbose_name='Метод', to='Method', on_delete=models.RESTRICT,default='')
    adress = models.CharField('Адрес доставки',max_length=100, null=True, blank=True)
    datetime = models.DateTimeField('Дата и время создания заявки', auto_now_add=True)


form:

class AppointmentForm(forms.ModelForm):
    email_subject_template = 'accounts/emails/appointment/subject.html'
    email_body_template = 'accounts/emails/appointment/body.html'
    html_email_body_template = 'accounts/emails/appointment/html.html'
    extra_context = {}
    datetime = forms.DateTimeField(input_formats=[*DateTimeFormatsIterator(), '%d.%m.%Y %H:%M'], required=False)
    # phone1 = forms.CharField(required=False)  # Fake phone field to trap spam bots

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['color'].empty_label = 'Выберите цвет'
        self.fields['dyson'].empty_label = 'Выберите свой Дайсон'
        self.fields['method'].empty_label = 'Выберите метод'

    # def clean(self):
    #     form_data = self.cleaned_data
    #
    #     if form_data.get('phone1', None):
    #         print('Rej')
    #         raise ValidationError('Ваша заявка была определена как спам', code='spam')
    #
    #     return form_data

    def send_mail(self, request):
        if not self.is_valid():
            raise ValueError('The form must be valid to send mails')
        dyson = self.cleaned_data.get('dyson')


        site_name = 'localhost'
        context = {'site_name': site_name, **self.cleaned_data, **self.extra_context}

        send_mail(
            render_to_string(self.email_subject_template, context=context).replace('\n', ''),
            render_to_string(self.email_body_template, context=context),
            settings.DEFAULT_FROM_EMAIL,
            dyson.get_email_list(),
            fail_silently=True,
            html_message=render_to_string(self.html_email_body_template, context,
                                          request=request) if self.html_email_body_template else None
        )


Что я неправильно делаю?Заранее благодарен
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@G2100636
попробуйте у селекта атрибут name указать с нужным значением
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы