gpt4 book ai didi

python - Django unique_together 但仅用于过滤

转载 作者:行者123 更新时间:2023-11-29 22:10:11 25 4
gpt4 key购买 nike

有没有办法过滤 django 模型,其中两个字段在一起是唯一的?

例如,我有这个模型:

class Sequence(models.Model):
id = models.CharField(max_length=25, primary_key=True)
taxonomy = models.CharField(max_length=25)
sequence = models.TextField()

可以有多个具有相同序列和分类的 Sequence 对象。我想要拥有一个唯一的序列对象子集,其中没有分类法具有多个相同的序列,并且如果有多个序列,则仅选择一个对象。

到目前为止,我已经尝试迭代结果:

def unique(query_set):
used_taxa = {}
for seq in query_set.all():
if not seq.sequence in used_taxa:
used_taxa[seq.sequence] = [seq.taxonomy]
yield seq
elif seq.sequence in used_taxa and not seq.taxonomy in used_taxa[seq.sequence]:
used_taxa[seq.sequence].append(seq.taxonomy)
yield seq
else:
pass

这给了我正确的结果,但我需要总体计数,因为我稍后要进行分页。

这也让我更接近,但在调用值后我无法访问完整的 Sequence 对象:

result = Sequence.objects.values("sequence", "taxonomy").annotate(id=Max("id"))

如果有人能给我指出正确的方向,我将不胜感激!谢谢。

最佳答案

您已经用 MySQL 标记了您的问题,所以我猜您正在使用该数据库。在这种情况下这是不幸的,因为 Django ORM 可以做你想做的事情,但只能在 PostgreSQL 上。

https://docs.djangoproject.com/en/1.8/ref/models/querysets/#distinct

在 Postgres 数据库上你可以这样做:

Sequence.objects.order_by('taxonomy', 'sequence').distinct('taxonomy', 'sequence')

关于python - Django unique_together 但仅用于过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31755766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com