Я пытаюсь отфильтровать таблицу в 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')
Я задаюсь вопросом, существует ли способ указать этот вид просачивания основного запроса?
Asset.objects.filter( project__name__contains="Foo")
Это стало возможным, так как ветка queryset-рефактора
приземлилась до 1.0. Билет 4088 выявил проблему. Это должно сработать:
Asset.objects.filter(
desc__contains=filter,
project__name__contains="Foo").order_by("desc")
В документации Django Many-to-one-one есть этот и другие примеры следующих посторонних ключей, использующих API модели.
.