获取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,但它在我序列化时抛出了一个错误。我试图用services__service_category__name在serialize中添加fields参数,但效果不佳。

有人能帮忙吗?

在您的视图中使用以下代码进行尝试,它对我有效:

def get_categories(request):
requests = Request.objects.all()
service_categories = []
for request in requests:
service_categories = request.services.values("service_category__name").all()

如果你想在之后序列化数据,你不能使用"values((",但你可以用json.dumps(检查下面的代码(来序列化它们

import json
def get_categories(request):
data_list = list(Request.objects.values("services__service_category__name").all())
data = json.dumps(data_list)

相关内容

  • 没有找到相关文章

最新更新