Django - операторы for должны содержать не менее четырех слов: для выбора question_set.all - PullRequest
0 голосов
/ 02 мая 2018

все круто? Это мой первый вопрос, английский не является моим родным языком, поэтому, пожалуйста, успокойся, хахахаха

Хорошо, вот в чем проблема, я думаю, что это идентично ... Я знаю, как сказать это по-английски, но в любом случае, структурная проблема.

Что происходит: я учусь после учебника, и на моем сайте localhost почти все работает чисто, но когда я решаю "проголосовать" за "Вопрос", это приводит к странице с ошибкой.

Вот трассировка (последняя строка):

 django.template.exceptions.TemplateSyntaxError: 'for' statements should have at least four words: for choice question_set.all

и где находится ошибка (я полагаю), мой файл "/results.html":

<h1>{{ question.question_text }}</h1>

<ul>
  {% for choice question_set.all %}
    <li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ 
choice.votes|pluralize }}</li>
  {% endfor %}
</ul>

<a href="{% url 'polls:detail' question.id %}">Vote again?</a>

Мой код models.py (как было задано <3): </p>

from django.db import models
import datetime
from django.utils import timezone



class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField ('date published')

def __str__(self):
    return self.question_text

def was_published_recently(self):
    now = timezone.now()
    return now - datetime.timedelta(days=1) <= self.pub_date <= now
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

def __str__(self):
    return self.choice_text

Спасибо за все! надеюсь, это понятно. (

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Вы только что забыли утверждение в

{% for choice in question_set.all %}
0 голосов
/ 02 мая 2018

Ваш for loop должен быть чем-то вроде этого, доступ через reverse_name

question.modelname_set.all

например, в зависимости от вашего случая:

{% for choice in question.choice_set.all %}
    <li>{{ choice.choice_text }} -- 
        {{ choice.votes }} vote{{ choice.votes|pluralize }}</li>
{% endfor %}
0 голосов
/ 02 мая 2018

я думаю, что у вас должно быть что-то вроде модели ForeignKey для Question для вашей Vote модели? Если это так, вы, возможно, должны сделать что-то вроде этого:

{% for choice in question.vote_set.all %}
{% empty %}
{% endfor %}

Если вы считаете, что нам нужна дополнительная информация о ваших моделях, чтобы помочь вам. Пожалуйста, добавьте код вашей модели, хотя бы вопрос модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...