我有一个需要管理员批准的Comment
模型。我正在为管理员提供一个视图。
但是,我使用昂贵的方式更新审批状态。
comments = # a list that contain Comment objects
for c in comments:
c.approved = True
c.approved_on = #now
c.save()
正如您所看到的,我正在循环遍历列表中的所有对象以及每次访问数据库时。
我正在寻找一种方法让我在SQL中做类似的事情
UPDATE comments SET approved = 1 WHERE id IN(...........)
这将在一个SQL查询中执行相同的操作。
有没有办法在Django中这样做?
这样在经理中使用批准方法吗?
Comment.objects.filter(pk__in=[1,2,3]).approve().save()
答案 0 :(得分:1)
最简单的方法:
def approve(self):
return self.get_queryset().update(approved=True)
注意:此解决方案有问题。 1}}和post_save
信号将不会被调用。
如果您需要此信号,则必须像在示例中那样迭代项目。
pre_save