我有一个模型,其中包含一个 CharField
MyModel
。该模型具有应保留的默认元排序。我正在使用以下查询来获取类型列表 -type
但是,类型正在重复。我可以做
MyModel.objects.all().values_list('type', flat=True).distinct()
但这会改变我不想要的顺序。有没有什么方法可以按顺序获取类型列表,而无需在 python 中手动创建列表?也欢迎其他更快的解决方案。
Django 版本 - 1.11
使用此代码
.order_by('type').distinct()
而不是这个代码
MyModel.objects.all().values_list('type', flat=True).distinct("type")
MyModel.objects.all().values_list('type', flat=True).distinct()
它会为你工作
首先,获取具有唯一类型的记录的id并将它们保存在列表中:
MyModel.objects.all().values('type', flat=True).order_by('type').distinct()
然后使用 ids 进行过滤:
ids = list(MyModel.objects.values_list('id', flat=True).order_by('type').distinct('type'))
MyModel.objects.values_list('type', flat=True).filter(id__in=ids)
然后,对于 python 3.6+:
types = MyModel.objects.all().values_list('type', flat=True).distinct()
对于以前的 Python 版本,请使用
types = list(dict.fromkeys(types))
:
OrderedDict