允许使用 Django-Moderation 根据条件将模型实例添加到审核队列

Allow a model instance to be added to the moderation queue based on a condition using Django-Moderation

给定一个模型:

class Blog(models.Model):
    title = models.CharField(max_length=200)#Title of the Post
    body = models.TextField(blank=False)
    state = models.CharField(max_length=60,choices=STATE_CHOICES,default='raw')`

仅当 state=published

时,博客实例才会添加到 Django-Moderation 的审核队列中

这个问题的解决方案是使用 Django-Moderation 的 "Automoderation" 特性。每当我们使用 instance.save() 保存我们的模型实例时,我们都会通过覆盖 Generic Moderatoris_auto_approve() 函数来自动调节模型实例,如图所示。

class BlogModerator(GenericModerator):

def is_auto_approve(self, obj, user):
    if obj.state == "raw":
        return self.reason('Not Submitted Yet !')
    super(MyModelModerator, self).is_auto_approve(obj, user)

此处所有 state = raw 绕过审核或以其他方式添加到审核队列的实例。