Получите все свойства вместе с их allowed_tenants в одном запросе. Django и React

У меня есть две модели Property и Tenants. Каждая Property может иметь несколько allowed_tenants. Модели

Мне нужен запрос, который бы извлекал все свойства вместе с их allowed_tenants в одном запросе (возможно, меньшее количество запросов), используя django orm

class Tenants(models.Model):
    tenant_type = models.CharField(verbose_name='tenant type', max_length=32)

    def __str__(self):
        return self.tenant_type


class Property(models.Model):

    owner = models.ForeignKey('user.User', on_delete=models.CASCADE, related_name='properties')
    property_name = models.CharField(verbose_name='property name', max_length=64)
    category = models.CharField(verbose_name='category', choices=Choices.category_choices, max_length=16)
    bathrooms = models.IntegerField(verbose_name='bathrooms', default=1)
    region = models.ForeignKey(Area, unique=True, related_name='properties', on_delete=models.CASCADE)
    # area = models.CharField(verbose_name='area', max_length=128)
    landmark = models.CharField(verbose_name='landmark', max_length=32)
    expected_rent = models.CharField(verbose_name='expected rent', default='not disclosed', max_length=16)
    expected_deposit = models.CharField(verbose_name='expected deposit', default='not disclosed', max_length=16)
    available_from = models.DateField(verbose_name='available from', default=datetime.date.today)
    allowed_tenants = models.ManyToManyField(Tenants, related_name='properties')
    likes = models.IntegerField(verbose_name='like', default=0)
    last_updated = models.DateField(verbose_name='last updated', auto_now_add=True)

Результат, который я ожидаю, должен быть таким =>

[{...property_details, tenants: ['family', 'bachelor'], property_name: 'property1'}, {...}]

я пробовал что-то подобное, но это дает мне несколько записей для одного объекта недвижимости с разными арендаторами в каждом объекте

properties = Property.objects.filter(allowed_tenants__tenant_type__in=['family']).annotate(
            property_owner=F('owner__first_name'),
            city=F('region__city__city'),
            area=F('region__area_name'),
            tenants=F('allowed_tenants__tenant_type'),
        ).values(
            'property_owner', 'property_name', 'category', 'bathrooms', 'city', 'area', 'landmark',
            'expected_rent', 'expected_deposit', 'available_from', 'tenants', 'likes', 'last_updated'
        )
[{...property1, tenants: 'family', property_name:'property_1'}, {...property1, tenants: 'bachelor', property_name:'property_1'}, {...}] 
Вернуться на верх