如何用字段替代Django 1.5的深度

2 投票
1 回答
1228 浏览
提问于 2025-04-17 18:14

在Django 1.5版本中,select_related()这个函数里的depth参数已经不再推荐使用了。你应该用(*fields)来列出具体的相关字段,像上面文档里说的那样。你也可以指定要跟踪的关系的深度限制:

b = Book.objects.select_related(depth=1).get(id=4)
p = b.author         # Doesn't hit the database.
c = p.hometown 

怎么用(*fields)来替代Django 1.5中的depth呢?

1 个回答

0

在这个特定的情况下

b = Book.objects.select_related("author", "hometown").get(id=4)

我想很多人都是通过使用深度参数来获取未使用的对象。

如果你经常使用某个 select_related 并且涉及很多字段,你可能想要创建一个自定义的查询集,这样可以通过一个自定义的方法(类似于 qs.usually_related())自动添加它。

要添加这种功能,你可以参考这个很棒的答案:

https://stackoverflow.com/a/2163921/267364

撰写回答