Python 在django中设计通知系统的合适模式?

Python 在django中设计通知系统的合适模式?,python,django,database-design,architecture,Python,Django,Database Design,Architecture,我试图在Django中创建一个通知系统。对不同的表(如注释表、关系表)使用通知类型字段、用户id和外键是否更好 或者,除了所有通知都有一个用户id字段外,它们是否应该为每种类型的通知(如“相似化”、“注释通知”)都有一个单独的表 设计1: 类相似化(models.Model): post=models.ForeignKey(post,on_delete=models.CASCADE) user=models.ForeignKey(用户,on_delete=models.CASCADE) 类注释

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

或者,除了所有通知都有一个用户id字段外,它们是否应该为每种类型的通知(如“相似化”、“注释通知”)都有一个单独的表

设计1:


类相似化(models.Model):
post=models.ForeignKey(post,on_delete=models.CASCADE)
user=models.ForeignKey(用户,on_delete=models.CASCADE)
类注释通知(models.Model):
post=models.ForeignKey(post,on_delete=models.CASCADE)
user=models.ForeignKey(用户,on_delete=models.CASCADE)
类后通知(models.Model):
post=models.ForeignKey(post,on_delete=models.CASCADE)
user=models.ForeignKey(用户,on_delete=models.CASCADE)
类绑定通知(models.Model):
bond=models.ForeignKey(bond,on_delete=models.CASCADE,)
user=models.ForeignKey(用户,on_delete=models.CASCADE)
设计2:


类通知(models.Model):
通知类型=models.IntegerField()
user=models.ForeignKey(用户,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)

使用
ContentType

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

通过这种方式,您可以将
Foreignkey
用于任何型号

您可以使用
GenericForeignKey
:虽然通常这不是一个好主意,但在这里这样做可能有意义。