Py学习  »  Django

在Django设计通知系统的适当模式?

F. Krovinsky • 5 年前 • 1421 次点击  

我正试图在Django创建一个通知系统。通知类型字段、用户ID和不同表(如注释、关系表)的外键是否更好?

或者,除了所有通知都有一个用户ID字段之外,它们还应该为每种通知类型都有一个单独的表,如“相似通知”、“注释通知”等?

设计1:


class LikeNotification(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

class CommentNotification(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

class PostNotification(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)


class BondNotification(models.Model):
    bond = models.ForeignKey(Bond, on_delete=models.CASCADE,)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

设计2:


class Notification(models.Model):
    notification_type = models.IntegerField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    like = models.ForeignKey(Like, on_delete=models.CASCADE)
    comment = models.ForeignKey(Comment, on_delete=models.CASCADE)
    bond = models.ForeignKey(Bond, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39439
 
1421 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Francisco Couzo
Reply   •   1 楼
Francisco Couzo    5 年前

使用 ContentType :

content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')

这样你就可以 Foreignkey 任何型号