django 如何使用 exists()
django how to use exists()
django 文档有以下内容:
entry = Entry.objects.get(pk=123)
if some_queryset.filter(pk=entry.pk).exists():
print("Entry contained in queryset")
有人可以解释一下这是如何工作的吗?必须执行第一行吗?我们可以这样做吗:
if some_queryset.filter(pk=123).exists():
print("Entry contained in queryset")
我对 some_queryset 是什么感到困惑。在上面的例子中不会:
entry = Entry.objects.get(pk=123)
if entry.filter(pk=entry.pk).exists():
print("Entry contained in queryset")
更有意义?
can we just do:
if some_queryset.filter(pk=123).exists():
print("Entry contained in queryset")
是。 Django文档仅以先取Entry
为例说明Entry
和pk=123
存在于Entry
记录中。如果您随后想检查它是否也存在于 some_queryset
中(例如 Entry.objects.all()
的 .filter(…)
ed 版本),您可以使用 .filter(pk=entry.pk)
.
但是你不需要先获取Entry
对象,如果你提前知道主键,你已经可以直接使用它了。毕竟 entry.pk
只是 123
,对于 .filter()
子句来说,数据的来源是什么并不重要。
I'm confused by what some_queryset is.
想法是他们这里有一个 some_queryset
,这是 QuerySet
超过 Entry
个对象。例如,这可以是一个 Entry.objects.filter(pub_date__year=2010)
,因此是一个被过滤的查询集。如果您随后想知道 entry
是否是此 filtered 查询集的成员,您可以使用 some_queryset.filter(pk=123).exists()
检查 Entry
是否带有 pk=123
是此查询集的成员。在这种特定情况下(pub_date__year=2010
),我们因此检查 Entry
是否属于 2010 年发布的 Entry
s。
django 文档有以下内容:
entry = Entry.objects.get(pk=123)
if some_queryset.filter(pk=entry.pk).exists():
print("Entry contained in queryset")
有人可以解释一下这是如何工作的吗?必须执行第一行吗?我们可以这样做吗:
if some_queryset.filter(pk=123).exists():
print("Entry contained in queryset")
我对 some_queryset 是什么感到困惑。在上面的例子中不会:
entry = Entry.objects.get(pk=123)
if entry.filter(pk=entry.pk).exists():
print("Entry contained in queryset")
更有意义?
can we just do:
if some_queryset.filter(pk=123).exists(): print("Entry contained in queryset")
是。 Django文档仅以先取Entry
为例说明Entry
和pk=123
存在于Entry
记录中。如果您随后想检查它是否也存在于 some_queryset
中(例如 Entry.objects.all()
的 .filter(…)
ed 版本),您可以使用 .filter(pk=entry.pk)
.
但是你不需要先获取Entry
对象,如果你提前知道主键,你已经可以直接使用它了。毕竟 entry.pk
只是 123
,对于 .filter()
子句来说,数据的来源是什么并不重要。
I'm confused by what some_queryset is.
想法是他们这里有一个 some_queryset
,这是 QuerySet
超过 Entry
个对象。例如,这可以是一个 Entry.objects.filter(pub_date__year=2010)
,因此是一个被过滤的查询集。如果您随后想知道 entry
是否是此 filtered 查询集的成员,您可以使用 some_queryset.filter(pk=123).exists()
检查 Entry
是否带有 pk=123
是此查询集的成员。在这种特定情况下(pub_date__year=2010
),我们因此检查 Entry
是否属于 2010 年发布的 Entry
s。