外键的Django ORM过滤器逻辑给出了不明确的结果



我有以下两个查询集作为django模型的属性

1 - Comment.objects.filter(ForeignKeyField=self) 
2 - Comment.objects.filter(ForeginKeyField=self.id)

我不是为什么这两行都给出相同的结果,即CommentObjectList ?为什么我可以用self和self过滤Comment Resultset。我都要??

FK字段实际上保存了相关记录的主键。所以

Comment.objects.filter(ForeginKeyField=self.id)

应该给出您想要的结果(假设这里的self是外键模型的实例)

Comment.objects.filter(ForeginKeyField=self)

将尝试填充整个实例并匹配它,因此您将与FK对象的实例匹配intUUID(取决于您拥有的键类型),当然这将不匹配。

旁注:Django中的字段名应该使用下划线,按照惯例,应该是foreign_key_field,而不是ForeignKeyField

相关内容

  • 没有找到相关文章

最新更新