Django Notification: 实现高效的通知管理
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.utils import timezone
# 通知模型
class Notification(models.Model):
sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sent_notifications')
recipient = models.ForeignKey(User, on_delete=models.CASCADE, related_name='received_notifications')
unread = models.BooleanField(default=True)
timestamp = models.DateTimeField(default=timezone.now)
# 通过GenericForeignKey实现对任何模型的通知
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
def __str__(self):
return f"{self.sender} - {self.recipient}"
# 使用通知的例子
# 假设有一个模型Comment
comment = Comment.objects.get(id=comment_id)
Notification.objects.create(
sender=sender,
recipient=recipient,
content_object=comment
)
这个例子展示了如何在Django中创建一个通知系统,用于跟踪用户间的交流,如回复评论、私信等。使用了GenericForeignKey来实现对任何Django模型的通知功能。通过创建Notification
实例,并将相关模型的实例设置为content_object
,我们可以跟踪和管理用户的通知。
评论已关闭