【发布时间】:2014-03-05 00:12:42
【问题描述】:
在 Django 中,假设我有一个经常被调用的函数:
def blockUser(id_to_block, user):
to_block = Usr.objects.get(pk=id_to_block)
user.blocked.add(to_block)
user.save()
其中user 是Usr 类型,是使用models.Model 制作的自定义类,blocked 是ManyToManyField。
按照我的阅读方式,Django 将从数据库中获取to_block,然后将to_block 添加到user.blocked,访问数据库两次。由于 ManyToManyField 只是一个带有 from_id 和 to_id 的表,而且我已经知道这两个 id,我可以只通过一个数据库访问来完成它吗?
我的问题是,鉴于to_block 没有在其他任何地方使用这一事实,Django 真的会为此进行两次数据库查询吗?如果是这样,我如何通过一个数据库查询来实现这一目标?
非常感谢!
【问题讨论】:
标签: django