Django contstruct对象
我正在为一个应用程序开发一个后端,并编写一个函数从多个表中检索数据,然后从中构造一个httpresponse 我想做的是得到一个疫苗,然后是该疫苗的所有疾病,然后构建包含所有内容的东西(对象、列表、dict等等) 到目前为止,我得到的是:Django contstruct对象,django,json,django-models,Django,Json,Django Models,我正在为一个应用程序开发一个后端,并编写一个函数从多个表中检索数据,然后从中构造一个httpresponse 我想做的是得到一个疫苗,然后是该疫苗的所有疾病,然后构建包含所有内容的东西(对象、列表、dict等等) 到目前为止,我得到的是: def vaccinepack(request, country_id): vaccines = Vaccine.objects.filter(diseases__countries__id=country_id) diseases = []
def vaccinepack(request, country_id):
vaccines = Vaccine.objects.filter(diseases__countries__id=country_id)
diseases = []
json = serializers.get_serializer("json")()
response = HttpResponse()
for v in vaccines:
dis = Disease.objects.filter(vaccine=v.id)
disdata = ""
for d in dis:
disdata += json.serialize([d], ensure_ascii=False)
json.serialize([v, disdata], ensure_ascii=False, stream=response)
return response
但是我在序列化[v,disdata]时遇到了麻烦
'list' object has no attribute '_meta'.
我对Django还比较陌生,所以我不确定该怎么做
以下是我的模型:
class Disease(models.Model):
name = models.CharField(max_length=100)
text = models.CharField(max_length=2000)
countries = models.ManyToManyField(Country, blank=True)
def __unicode__(self):
return self.name
class Vaccine(models.Model):
name = models.CharField(max_length=100)
text = models.CharField(max_length=2000)
diseases = models.ManyToManyField(Disease, blank=True)
def __unicode__(self):
return self.name
产生错误消息的直接原因是,您正在向Django序列化程序传递一个list对象,但它需要一个QuerySet 我要做的是将数据结构构建为一系列嵌套的Python字典,然后在最后使用
JSON.dumps()
将其全部转换为JSON。(请注意,这是实际内置的json
库,您已经使用序列化程序对其进行了跟踪。)类似(未测试):
请同时发布您的疫苗型号代码。:)
serializer = serializers.get_serializer('python')
vaccine_list = serializer.serialize(vaccines)
for i, v in enumerate(vaccines):
diseases = v.diseases.all()
disease_list = serializer.serialize(diseases)
vaccine_list[i]['fields']['diseases'] = disease_list
data = json.dumps(vaccine_list)