Получение значения внешнего ключа внешнего ключа в Django

У меня есть три следующие модели:

class ServiceCategory(models.Model):
    name = models.CharField(max_length=50)

    def natural_key(self):
        return self.name

class Service(models.Model):
    service_category = models.ForeignKey(ServiceCategory, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)

    def natural_key(self):
        return self.name

class Request(models.Model):
    name = models.CharField(max_length=50)
    services = models.ManyToManyField(Service)

    def natural_key(self):
        return self.name

Я хочу сделать запрос в Django по умолчанию таким образом, чтобы получить названия категорий услуг, поскольку я буду фильтровать по ним.

В настоящее время у меня есть следующее:

    data = Request.objects.all()

    data = serialize("json", data, use_natural_foreign_keys=True)

Пока что я получаю только названия услуг, но не категории услуг. Я пробовал values, но он выдает ошибку при сериализации. Я попытался добавить аргумент fields в serialize с помощью services__service_category__name и это тоже не сработало.

Может ли кто-нибудь помочь с этим?

Попробуйте сделать это со следующим кодом в вашем представлении, у меня он работает:

def get_categories(request):
    requests = Request.objects.all()
    service_categories = []
    for request in requests:
        service_categories = request.services.values("service_category__name").all()
Вернуться на верх