В приведенном ниже примере у меня есть модель Proof
, которая содержит внешний ключ к модели Option
. Я хочу перечислить все варианты в моем шаблоне вместе со своими соответствующими доказательствами. Как я могу сделать соответствующие объединения в django? Я попытался использовать метод _set.all()
, но, похоже, он не работает в наборе запросов, только в одном листинге.Доступ к внешнему ключу в django queryset
Спасибо за вашу помощь :)
models.py
class Option(TimeStampActivate):
title = models.CharField(max_length=500,null=True)
user = models.ForeignKey(User)
option = models.CharField(max_length=300)
class Proof(TimeStampActivate):
user = models.ForeignKey(User)
option = models.ForeignKey(Option)
comment = models.CharField(max_length=500,null=True)
link = models.URLField()
View.py
options = Option.objects.all()
Спасибо, что сработало! Но если вы посмотрите, как это сделать, есть ли новый цикл поиска sql для каждого элемента цикла? Или это просто одно соединение? – CodeMonkeyB
Я не уверен, но я думаю, что не будет нового поиска для каждого элемента (это делается в контексте шаблона, используя результаты, полученные из вашего запроса в представлении, поэтому он не попадет в базу данных). Даже в представлении 'Option.objects.all()' сначала не попадает в базу данных. Для получения дополнительной информации просмотрите ссылку на запрос API запроса (https://docs.djangoproject.com/en/dev/ref/models/querysets/). – machaku
[select_related] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related) и [prefetch_related] (https://docs.djangoproject.com/en/dev/ref/models/querysets/# prefetch-related) может повысить производительность при поиске связанных объектов. Примечание: работа с предварительной загрузкой в Django-1.4 – machaku