这个功能是留言在系统审核后才能在前台显示,审核不通过通知给学员并告知不通过的原因。这个功能需要加个模型吗
时间: 2024-02-27 11:55:30 浏览: 17
是的,为了实现留言审核不通过时通知学员并告知不通过的原因,我们需要添加一个模型来记录审核不通过的原因。
以下是对模型的修改,添加了一个新的模型 `CommentRejectReason`:
```python
class CommentRejectReason(models.Model):
reason = models.TextField(verbose_name='审核不通过原因')
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
comment = models.OneToOneField(Comment, on_delete=models.CASCADE, verbose_name='对应留言')
class Meta:
verbose_name_plural = '审核不通过原因'
def __str__(self):
return self.reason
```
在上述模型中,`CommentRejectReason` 模型与 `Comment` 模型通过一对一的关系进行关联,用于记录审核不通过的原因。当某条留言的状态为 `rejected` 时,我们可以通过该模型记录下审核不通过的原因,并在通知学员时一并发送。
需要注意的是,在修改 `Comment` 模型的 `status` 字段值时,需要同时创建或删除 `CommentRejectReason` 实例。可以使用 Django 的信号量(Signal)来实现。
```python
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=Comment)
def create_or_delete_comment_reject_reason(sender, instance, **kwargs):
if instance.status == 'rejected':
CommentRejectReason.objects.get_or_create(comment=instance)
else:
CommentRejectReason.objects.filter(comment=instance).delete()
```
上述代码使用 `post_save` 信号量,当 `Comment` 模型实例被保存时,会自动调用 `create_or_delete_comment_reject_reason` 函数。该函数根据 `Comment` 实例的 `status` 值来创建或删除 `CommentRejectReason` 实例。
在实际应用中,您可能还需要根据具体需求进行调整和修改。