我知道object_id
比object.id
更有效率
但这对外键过滤有效吗?
是
Model.objects.filter(author_id=author_obj.id)
或
Model.objects.filter(author_id=author_id)
比
更有效Model.objects.filter(author=author_obj)
答案 0 :(得分:2)
如文档的Queries over related objects部分所述,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
我个人在项目中通常使用entry.blog_id
,因为它不会产生额外的查询。
答案 1 :(得分:1)
我认为最好的是:
Model.objects.filter(author_id=author_id)
因为字段author_id存在于Model
有
Model.objects.filter(author_id=author_obj.id)
。这将对find author_obj执行一个查询,并在其中获取字段id
。