我正在尝试构建以下注释,本质上是从
nin
或从 IDcard
模型中查找人的 Person
字段。
.annotate(
checkins_scan=Scan.objects.filter(models.Q(nin=OuterRef("person__idcard__nin") | models.Q(national_number=OuterRef("person__nin")))
.values(
data=JSONObject(id="id", nin="nin", datetime="datetime")
)[:1]
)
但是,我收到以下错误:
NotImplementedError: Use .bitand(), .bitor(), and .bitxor() for bitwise logical operations.
看起来我需要
bitor()
,但我没有进一步了解我找到的基本示例(例如此处的文档)。
当我尝试与
F()
合作时,我得到 TypeError: F.__init__() got an unexpected keyword argument 'nin'
。
有关如何正确执行此操作的任何线索?
Subquery
[Django-doc]:
from django.db.models import OuterRef, Subquery
MyModel.objects.annotate(
checkins_scan=Subquery(
Scan.objects.filter(
models.Q(
nin=OuterRef('person__idcard__nin')
| models.Q(national_number=OuterRef('person__nin'))
).values(data=JSONObject(id='id', nin='nin', datetime='datetime'))
)[:1]
)
)