Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django从queryset中删除重复项_Python_Django_Orm - Fatal编程技术网

Python Django从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函数: 但我想你不能删除其中一个:)你必须决

我想删除相对字段中的重复项,我的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 ORM
F
函数:

但我想你不能删除其中一个:)你必须决定要删除哪一个

更新

当您像
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,我不能在不同的字段中使用字段