Внешний ключ внешнего фильтра Django - программирование
Подтвердить что ты не робот

Внешний ключ внешнего фильтра 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

Как получить издателя из класса книги, например, я хочу, чтобы весь издатель для всех книг имел название, начинающееся с "привет"? Спасибо вам

4b9b3361

Ответ 1

Если вы хотите получить издателей, вам нужно начать с Publisher. Это означает, что вы должны запрашивать через Book → Отношение издателя назад. Вот что говорят об этом документы:

Поиск, охватывающий отношения

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

...

Чтобы обратиться к "обратным" отношениям, просто используйте строчное имя модели.

Запрос:

Publisher.objects.filter(book__title__startswith='hello')