选择字段时将QuerySet转换为JSON

时间:2015-01-23 18:05:06

标签: json django django-queryset

我正在尝试将通过Django查询选择的值列表转换为json。

我的查询是:

city_list = Address.objects.values('city').distinct()

地址是

class Address(models.Model):
    id = models.AutoField(primary_key=True)
    streetAddress = models.CharField(max_length=200)
    city = models.CharField(max_length=200)
    state = models.CharField(max_length=200)
    zipCode = models.CharField(max_length=200)
    def __unicode__(self):
        return str(self.id) + ", " + self.streetAddress + ", " + self.city + ", " + self.state + ", " + self.zipCode
    def natural_key(self):
        return {"streetAddress":self.streetAddress, "city":self.city, "state":self.state, "zipCode":self.zipCode}

我正在尝试将其转换为像这样的json:

{ "cities" : [ {"city" : "New York"}, {"city" : "Los Angeles"}, {...} ]}

我试过了:

jsonData = json.dumps(city_list)

但是错误说city_list不是JSON可序列化的。在错误屏幕中,字符串如下所示:

[{'city': u'Baltimore'}, {'city': u'Berkeley'}, {'city': u'Austin'}...

我该如何解决?

1 个答案:

答案 0 :(得分:1)

解决方案:按列表传递

city_list = list(Address.objects.values('city').distinct())
jsonData = json.dumps({"cities" : city_list})