Джанго: Форма недействительна - PullRequest
0 голосов
/ 29 мая 2018

Я в настоящее время изо всех сил пытаюсь заставить мою форму работать должным образом.Я создал форму вручную (template.html) и вижу все данные, когда вызываю ее с помощью print (request.POST) (в views.py - checkout), однако form.is_valid (): (в views.py - checkout) не работает.Означает, что моя форма недействительна.

Я думаю, проблема в том, что я создал форму вручную и объединил ее с формой модели, где я хочу после проверки моих данных с помощью form.valid () сохранить ее. Можеткто-нибудь из вас, ребята, помогите мне с моей проблемой, почему она не действительна?

template.html

<form action="{% url 'checkout:reserve_ticket' %}" method="post">
{% csrf_token %}
{% for ticket in event.tickets.all %}
    <p>
        {{ ticket.name }} for {{ ticket.price_gross }} with quantity:
        <input type="hidden" name="order_reference" value="123456af">
        <input type="hidden" name="ticket" value="{{ ticket.id }}">
        <input type="hidden" name="ticket_name" value="{{ ticket.name }}">
        <input type="number" name="quantity" max="{{ ticket.event.organiser.max_quantity_per_ticket }}" placeholder="0">
    </p>
{% endfor %}
    <button type="submit" class="btn btn-primary">Continue</button>
</form>

models.py

class ReservedItem(models.Model):
    order_reference = models.CharField(
        max_length=10,
        unique=True
    )
    ticket = models.ForeignKey(
        Ticket,
        on_delete=models.PROTECT,
        related_name='reserved_tickets'
    )
    ticket_name = models.CharField(max_length=100)
    quantity = models.IntegerField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

forms.py

class ReserveForm(forms.ModelForm):

class Meta:
    model = ReservedItem
    fields = ['order_reference', 'ticket', 'ticket_name', 'quantity']

views.py - события

# Create your views here.
class EventDetailView(DetailView):

    context_object_name = 'event'

    def get_object(self):
        organiser = self.kwargs.get('organiser')
        event = self.kwargs.get('event')
        queryset = Event.objects.filter(organiser__slug=organiser)
        return get_object_or_404(queryset, slug=event)

views.py - проверка

def reserve_ticket(request):
    if request.method == 'POST':
        form = ReserveForm(request.POST)
        if form.is_valid():
            print("Hello World")
            return redirect("https://test.com")
    else:
        print("back to homepage")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...