以下是我在django模型文件中的一小部分代码:
class Component(Document):
id = IntField(primary_key=True)
class GenericComponent(Document):
id = IntField(primary_key=True)
class Block(Document):
components = GenericReferenceField() # can be Component or GenericComponent
# This line gives the error:
component_ids = request.POST.getlist('components')
Block.objects.filter(components__in=component_ids)
所以我对我的模型进行了其他一些更改,但无法找到为什么这个问题在各处都发生。
答案 0 :(得分:0)
GenericReferenceField
期望具有元属性的对象具有文档名称而不是unicode
,因此这解决了所有问题:
component_ids = GenericComponent.objects.filter(
id__in=request.POST.getlist('components'))
Block.objects.filter(components__in=component_ids)
它搜索具有_meta
属性的对象列表,并正确筛选右Reference
。