Django получает данные из связанной модели, которая имеет FK

как я могу сделать этот набор запросов:

SELECT 
  p.*,
  o.name,
  o.link
FROM property p
INNER JOIN listing l on l.property_id = p.id
INNER JOIN ota o on o.id = l.ota_id

модели

class Property(Model):
   code = CharField()
   ...

class Listing(Model):
   ota = ForeignKey(Ota)
   property = ForeignKey(Property)

class Ota(Model):
   name = Charfield()
   link = Charfield()

с Property.objects.all() я вижу в возвращаемом объекте, что есть listing_set

скажем:

queryset = Property.objects.all()
queryset[0].listing_set.all()

но он приносит всю модель, а не связанную с property_id;

также пробовал получить данные Ota в сериализаторе с помощью SerializerMethodField и выполнить новый запрос для получения этой информации, но производительность значительно снизилась.

Думаю, вам следует использовать родственное_имя

родственное_имя

class Property(Model):
   code = CharField()
   ...

class Listing(Model):
   ota = ForeignKey(Ota)
   property = ForeignKey(Property,related_name='listinings')

class Ota(Model):
   name = Charfield()
   link = Charfield()

и

pp=Property.objects.first()
pp.listinings.all()
Вернуться на верх