Django MySql - 仅结合()和distinct()

时间:2014-11-15 10:47:39

标签: python mysql django

这是我在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'

如何获得不同的值?

1 个答案:

答案 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')