Получение значения внешнего ключа внешнего ключа в 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()