Django在保留顺序的同时从.values_list查询中删除重复项

时间:2019-11-11 12:58:20

标签: python django django-queryset

我有一个模型MyModel,其中包含一个CharField type。模型具有应保留的默认元顺序。我正在使用以下查询来获取类型列表-

MyModel.objects.all().values_list('type', flat=True).distinct()

但是,类型不断重复。我可以做.order_by('type').distinct(),但是那会改变我不想要的顺序。有什么方法可以按顺序获取类型列表,而无需在python中手动创建列表?也欢迎使用其他更快的解决方案。

Django版本-1.11

3 个答案:

答案 0 :(得分:0)

与您输入的类型不匹配,因为您未指定

使用此代码

MyModel.objects.all().values_list('type', flat=True).distinct("type")

代替此代码

MyModel.objects.all().values_list('type', flat=True).distinct()

答案 1 :(得分:0)

您可以尝试

HKEY_CURRENT_USER\Software\Intel\Indeo
HKEY_LOCAL_MACHINE\SOFTWARE\Intel\Indeo
HKEY_USERS\S-1-5-21-669792009-2657969199-152103076-1000\Software\Intel\Indeo

它将为您服务

答案 2 :(得分:0)

您可以通过2个步骤进行操作:

首先,获取具有唯一类型的记录的ID,并将其保存在列表中:

nm bin/decode_video.o 

                 U avcodec_alloc_context3
                 U avcodec_find_decoder
                 U avcodec_free_context
                 U avcodec_open2
                 U avcodec_receive_frame
                 U avcodec_send_packet
                 U av_frame_alloc
                 U av_frame_free
                 U av_packet_alloc
                 U av_packet_free
                 U av_parser_close
                 U av_parser_init
                 U av_parser_parse2
                 U exit
                 U fclose
                 U feof
                 U fflush
                 U fopen
                 U fprintf
                 U fread
                 U fwrite
                 U _GLOBAL_OFFSET_TABLE_
000000000000026f T main
                 U memset
                 U printf
                 U snprintf
                 U __stack_chk_fail
                 U stderr
                 U stdout
00000000000000a3 t _ZL6decodeP14AVCodecContextP7AVFrameP8AVPacketPKc
0000000000000000 t _ZL8pgm_savePhiiiPc

然后使用ID进行过滤:

nm /usr/lib/x86_64-linux-gnu/libavcodec.a | grep avcodec_send_packet

00000000000033e0 T avcodec_send_packet
                 U avcodec_send_packet