繁体   English   中英

使用 MySQL 从 Django QuerySet 中获取不同的值

[英]Get a distinct value from Django QuerySet using MySQL

有谁知道如何在 Django QuerySet 中获得不同的值? 我正在使用 MySQL db,但我还找不到解决方案。

表格是:

         ID     WORK_YMD    LINE_NM  MODEL_CODE    MAG_NO             PRODC_MAGT_NO 
        118002  20191015    PBA-21F BN94-14806W A656MAF00001    BR10BN9414806WA656MAE4035
        118003  20191015    PBA-21F BN94-14806W A656MAF00001    BR10BN9414806WA656MAE4027
        118004  20191015    PBA-21F BN94-14806W A656MAF00001    BR10BN9414806WA656MAE4039
        118005  20191015    PBA-21F BN94-14806W A656MAF00001    BR10BN9414806WA656MAE4037
        118006  20191015    PBA-21F BN94-14806W A656MAF00001    BR10BN9414806WA656MAE4038

考虑到Filter mag_no = "My Variable" Ex:A656MAF00001

我尝试过这样的事情,但没有奏效。

Magazine.objects.filter(mag_no='A656MAF00001').get('model_code').distinct().order_by()

错误是:

“要解压的值太多”

尝试:

Magazine.objects.filter(mag_no='A656MAF00001').values('model_code').distinct().order_by('-id')

除非您使用 Postgres,否则不能将 arguments 赋予不同的值。

从文档:

仅在 PostgreSQL 上,您可以传递位置 arguments (*fields) 以指定应应用 DISTINCT 的字段名称。

Django 文档不同

编辑:根据评论获取最后一行。

Magazine.objects.filter(mag_no='A656MAF00001').values('model_code').distinct().last().get('model_code')

作为对 Nalin Dobhal 回答的改进,并响应您对他/她回答的评论,请执行以下操作:

Magazine.objects.filter(mag_no='A656MAF00001').values('model_code').distinct().order_by('-id').last().get('model_code')

这是因为,在调用 last() 之后,您会得到一个 python dict,并且要获取 dict 的值,您需要使用 get('key_name') function。 正如这里所指出的: https://realpython.com/python-dicts/#dgetltkeygt-ltdefaultgt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM