Python Django从queryset中删除重复项
我想删除相对字段中的重复项,我的queryset示例:Python Django从queryset中删除重复项,python,django,orm,Python,Django,Orm,我想删除相对字段中的重复项,我的queryset示例: example = models.Object.objects.values('name', 'photo__name', 'url', 'photo__url').distinct() 如果name==photo\u name和url==photo\u url我需要删除其中的一个,我如何使用Django ORM或我需要迭代queryset?要在筛选中引用模型字段,可以使用Django ORMF函数: 但我想你不能删除其中一个:)你必须决
example = models.Object.objects.values('name', 'photo__name', 'url', 'photo__url').distinct()
如果name==photo\u name和url==photo\u url
我需要删除其中的一个,我如何使用Django ORM或我需要迭代queryset?要在筛选中引用模型字段,可以使用Django ORMF
函数:
但我想你不能删除其中一个:)你必须决定要删除哪一个
更新
当您像Object.objects.filter(photo\u name='something')
那样过滤对象表时,您可以通过相关的照片名称来过滤对象表。所以你在处理两个表的连接。如果要排除名称=相关照片名称的对象,应执行以下操作
from django.db.models import F
Object.objects.exclude(name=F('photo__name'))
这有用吗?如果您使用的是PostgreSQL,请查看: 仅在PostgreSQL上,您可以传递位置参数(*字段),以便指定应应用DISTINCT的字段的名称 指定字段名称时,必须在查询集中提供一个
order\u by()
,并且order\u by()
中的字段必须以distinct()
中的字段开头,顺序相同
因此,在您的示例中,您可以使用以下方法删除某些字段上的重复项:
.order_by('photo__name', 'photo__url').distinct('photo__name', 'photo__url')
如果name==photo\uuuuu name,我需要删除photo\uuu name,如果url==photo\uuuu url remove photo\uuuuu urlsanswers查询只选择名称与相关照片名称不同的对象。如果您需要其他内容,您应该指定模型和输入/输出。例如,“删除”是指从返回的queryset中删除字段,还是修改现有的数据库记录?我的意思是从返回的queryset中删除这可能是有用的条目。objects.extra(其中=[“foo='a'或bar='a',“baz='a'))我使用MySQL,我不能在不同的字段中使用字段