簡體   English   中英

Django ORM:注釋中的計數與查詢集的計數有何不同?

[英]Django ORM: how count in annotation differ from count on query set?

qs = ...

qs = qs.annotate(v=Count('a', filter=Q(a__lt=5)))
a = qs.first().v
b = qs.filter(Q(a__lt=5)).count()

assert a == b  # error

為什么這些方法會產生不同的結果?

從有關Count(expression, **kwargs)文檔中:

返回通過提供的表達式相關的對象數

因此Count專門用於計算相關對象(通過 FK 或 M2M 關系),並且對行本身的任何其他列沒有多大意義。 在這種情況下,它通常會返回 1(可能取決於您的數據庫返回什么值),因為總是有 1 個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM