Django модели фильтруют по полю модели один к одному
Представьте себе, что у меня есть эти две модели:
class A(models.Model):
name = models.CharField(max_length=150)
class B(models.Model):
a = models.OneToOneField(
to=A, on_delete=models.CASCADE, null=False
)
location = models.CharField(max_length=100)
И я хочу, чтобы набор запросов модели B фильтровался по имени a.name и местоположению,
вот так:
select * from B join A
on B.a.pk = A.pk
where A.name="name" and B.location="location";
Я попробовал это, но это дает ошибку:
query=B.objects.filter(a.name=name)
Внимательно читайте документацию. Вы можете получить доступ к связанным полям с помощью двойного подчеркивания. Так что в вашем случае dat будет:
query=B.objects.filter(a__name='name', location='location')