Django - фильтрация на свойствах внешнего ключа

Я пытаюсь отфильтровать таблицу в Django на основе значения конкретного поля a ForeignKey.

Например, у меня есть две модели:

class Asset(models.Model):
    name = models.TextField(max_length=150)
    project = models.ForeignKey('Project')

class Project(models.Model):
    name = models.TextField(max_length=150)

Я хотел бы отфильтровать свой список актива на основе названия связанного проекта.

В настоящее время я выполняю два запроса:

project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
                                  project__in=project_list).order_by('desc')

Я задаюсь вопросом, существует ли способ указать этот вид просачивания основного запроса?

85
задан daaawx 13 May 2019 в 21:13
поделиться

2 ответа

Asset.objects.filter( project__name__contains="Foo")

130
ответ дан 24 November 2019 в 08:20
поделиться

Это стало возможным, так как ветка queryset-рефактора приземлилась до 1.0. Билет 4088 выявил проблему. Это должно сработать:

Asset.objects.filter(
    desc__contains=filter,
    project__name__contains="Foo").order_by("desc")

В документации Django Many-to-one-one есть этот и другие примеры следующих посторонних ключей, использующих API модели.

.
14
ответ дан 24 November 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: