Djangoforeignkey过滤整个对象或object_id

Kub*_*bas 6 django django-models

我知道这object_id比外键过滤更有效,object.id 但是这条规则适用于外键过滤吗?

Model.objects.filter(author_id=author_obj.id) 
Run Code Online (Sandbox Code Playgroud)

或者

Model.objects.filter(author_id=author_id) 
Run Code Online (Sandbox Code Playgroud)

比更有效率

Model.objects.filter(author=author_obj)
Run Code Online (Sandbox Code Playgroud)

Sat*_*evg 5

如文档的相关对象查询部分所述,author_obj.id和之间没有区别author_obj

例如,如果您有一个 id=5 的 Blog 对象 b,则以下三个查询将是相同的:

Entry.objects.filter(blog=b) # Query using object instance
Entry.objects.filter(blog=b.id) # Query using id from instance
Entry.objects.filter(blog=5) # Query using id directly
Run Code Online (Sandbox Code Playgroud)

我个人entry.blog_id在我的项目中使用它作为规则,因为它不会生成额外的查询。