Что значит "question.choice_set.all"? Помогите понять код

203
31 декабря 2021, 05:10

Не могу понять этот кусок:

<ul>
    {% for choice in question.choice_set.all %}
         <li>{{ choice.choice_text }}</li>
    {% endfor %}
</ul>

Что делает цикл, что за choice_set.all и как они связаны с choice.choice_text? Вот модели:

import datetime
from django.db import models
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):
    return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

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
Answer 1

Это называется связанные обьекты:

question.choice_set.all - означает выбрать все Choice связанные с текущим вопросом - то есть те Choice, которые ссылаются на данный Question через поле ForeignKey(Question,...). All в конце вернёт итерируемый queryset, который будет содержать набор соответствующих Choice.

Ну а с choice_text вообще все просто: т.к каждый элемент полученного queryset-а будет являться экземпляром Choice, то вы можете из него обращаться к любому полю модели Choice

READ ALSO
Каким образом можно добавить объекты классов из пакета javafx.geometry?

Каким образом можно добавить объекты классов из пакета javafx.geometry?

Как их визуализировать и возможно ли это вообще? Например Point2D, он ведь не расширяет Node, следовательно его нельзя поместить ни в один из контейнеров

149
Множественный рендеринг моделей Libgdx

Множественный рендеринг моделей Libgdx

кто может подсказать, хочу отрисовать одну модель, в разных местах на карте, прочитал, что можно сделать один меш, и через вершинный шейдер...

104
Каковы различия между ByteArrayInputStream и ByteArrayOutputStream?

Каковы различия между ByteArrayInputStream и ByteArrayOutputStream?

Вроде бы в оба можно записывать, вроде бы из обоих можно читатьВ чем их различия?

140