如何使用Django Querysets和Q()与相同模型类型的对象进行比较?

如何使用Django Querysets和Q()与相同模型类型的对象进行比较?,django,django-models,django-queryset,django-q,Django,Django Models,Django Queryset,Django Q,我有一个叫MyModel的Django模型。m是MyModel的一个实例。 我想使用Django QuerySet来查找所有不是m的MyModel实例。 怎么做?这不起作用: MyModel.objects.filter(~Q(m)) 似乎您可以使用Q查询MyModel的属性。但是我不知道如何使用Q来包含/排除MyModel本身的实例。这可行吗?如果是,怎么做?如果没有,我想做什么最有效、最优雅的方式是什么?使用模型的pk主键字段: MyModel.objects.exclude(pk=m.p

我有一个叫MyModel的Django模型。m是MyModel的一个实例。 我想使用Django QuerySet来查找所有不是m的MyModel实例。 怎么做?这不起作用:

MyModel.objects.filter(~Q(m))
似乎您可以使用Q查询MyModel的属性。但是我不知道如何使用Q来包含/排除MyModel本身的实例。这可行吗?如果是,怎么做?如果没有,我想做什么最有效、最优雅的方式是什么?

使用模型的pk主键字段:

MyModel.objects.exclude(pk=m.pk)
若要排除另一个型号n以及下面评论中提出的其他问题,您可以执行以下操作:

MyModel.objects.exclude(pk=m.pk).exclude(pk=n.pk)
更一般地说,要排除实例列表,请在语法中使用uu:

使用模型的主键字段:

MyModel.objects.exclude(pk=m.pk)
若要排除另一个型号n以及下面评论中提出的其他问题,您可以执行以下操作:

MyModel.objects.exclude(pk=m.pk).exclude(pk=n.pk)
更一般地说,要排除实例列表,请在语法中使用uu:


@SaqibAli-见修订本answer@SaqibAli-见经修正的答复