【问题标题】:Django, designing a model that is partially linked with another modelDjango,设计一个与另一个模型部分链接的模型
【发布时间】:2013-04-14 20:30:56
【问题描述】:

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

所以在 BlogViewer 中,我有一些电子邮件地址,其中一些存在于我的用户模型中,而另一些则不存在。如何将我的 BlogViewer 模型链接到我的 Users 模型?我是否应该将我的 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()
    ...

谢谢!

【问题讨论】:

    标签: django database-design django-models


    【解决方案1】:

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

    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)
    

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

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      相关资源
      最近更新 更多