2

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

MyModel.objects.filter(~Q(m))

看来您可以使用 Q() 查询 MyModel 的属性。但是,我不知道如何使用 Q 来包含/排除 MyModel 本身的实例。这是可行的吗?如果是这样,怎么做?如果没有,什么是最有效和最优雅的方式来完成我正在尝试做的事情?

4

1 回答 1

4

使用模型的pk(主键)字段:

MyModel.objects.exclude(pk=m.pk)

要排除另一个模型n(在下面的评论中提出其他问题),您可以执行以下操作:

MyModel.objects.exclude(pk=m.pk).exclude(pk=n.pk)

更一般地说,要排除实例列表list_of_instances,请使用以下__in语法:

MyModel.objects.exclude(pk__in=[instance.pk for instance in list_of_instances])
于 2013-12-29T06:09:31.217 回答