这是我在Django中的模型。
class Meta_Columns(models.Model):
cur_parent=models.CharField(max_length=200)
cur_child=models.CharField(max_length=200)
cur_child_label=models.CharField(max_length=200)
cur_childisparent= models.BooleanField()
cur_childtype= models.CharField(max_length=200,choices=CHILD_TYPE)
cur_Misc= models.CharField(max_length=200,blank=True)
class Admin:
pass
我想选择'cur_parent'
列并获取不同的值(来自MySql)
以下是代码。
if request.method == 'POST':
all_parents = Meta_Columns.objects.only("cur_parent").distinct("cur_parent")
data = serializers.serialize("json", all_parents)
return HttpResponse(data, content_type='application/json')
如果我调用视图,这就是我得到的错误。
DISTINCT ON fields is not supported by this database backend
我无法使用values("field_name").distinct()
,因为它不适用于json&抛出此错误:'dict' object has no attribute '_meta'
。
如何获得不同的值?
答案 0 :(得分:0)
Django的serializers.serialize()
期望Django模型实例作为输入,而distinct()
将不会返回(因为cur_parent
不是模型的引用,而是CharField
1}})
如果.values('cur_parent')
适合您,您可以使用常规JSON序列化程序序列化不同父项列表,例如
import json
all_parents = Meta_Columns.objects....values('cur_parent').distinct()
json_str = json.dumps(all_parents) # Works with regular data structure,
# doesn't need to be a Django model instance
return HttpResponse(json_str, content_type='application/json')