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')
Вернуться на верх