我有三个模型,如下所示:
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)