Внешний ключ внешнего фильтра Django
Я пытаюсь получить правильный запрос для моего проекта.
Вот пример или моя модель:
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __unicode__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __unicode__(self):
return self.title
Как получить издателя из класса книги, например, я хочу, чтобы весь издатель для всех книг имел название, начинающееся с "привет"?
Спасибо вам
Ответы
Ответ 1
Если вы хотите получить издателей, вам нужно начать с Publisher
. Это означает, что вы должны запрашивать через Book → Отношение издателя назад. Вот что говорят об этом документы:
Поиск, охватывающий отношения
Чтобы охватить отношения, просто используйте имя поля связанных полей в моделях, разделенных двойными символами подчеркивания, до тех пор, пока вы не попадете в нужное поле
...
Чтобы обратиться к "обратным" отношениям, просто используйте строчное имя модели.
Запрос:
Publisher.objects.filter(book__title__startswith='hello')