Django,设计一个与另一个模型部分链接的模型

时间:2013-04-14 20:30:56

标签: django database-design django-models

我正在开发一种功能,以限制博客对给定用户列表(博客查看者)的可见性。我想使用电子邮件地址添加查看器,因此如果该电子邮件地址尚不存在用户,则会向用户发送邀请以创建帐户。

所以在BlogViewer中我有一些电子邮件地址,其中一些存在于我的用户模型中,有些则没有。如何将BlogViewer模型链接到我的用户模型?我应该将BlogViewer分成两个模型,一个是现有用户,所以我可以使用ForeignKey,另一个使用不存在的用户?

def Blog(models.Model):
    creator = models.ForeignKey(User)
    title = models.CharField()
    description = models.TextField()
    viewers = models.ManyToManyField(BlogViewer)

def BlogViewerr(models.Model):
    email= models.EmailField()


#Part of my User model
def User(models.Model):
    email = models.EmailField()
    username = models.CharField()
    ...

谢谢!

1 个答案:

答案 0 :(得分:0)

我设法使用可以为空的外键和设计模型来解决这个问题:

def Blog(models.Model):
    title = models.CharField()
    ...
    viewers = models.ManyToManyField(UserModel, through='BlogViewer')

def BlogViewer(models.Model):
    email = models.EmailField()
    user = models.ForeignKey(UserModel, null=True)
    blog = models.ForeignKey(Blog)

如果存在具有给定电子邮件地址的用户,则更新用户字段,否则保留为空。如果用户不存在,我仍然可以使用电子邮件地址向用户发送邀请加入的电子邮件。