【问题标题】:django model, a field which required two different fieldsdjango 模型,一个需要两个不同字段的字段
【发布时间】:2012-03-12 06:55:54
【问题描述】:

我正在构建一个小型网络应用程序。原则是用户可以注册并将出版物(他在网络上找到的一些文章)添加到数据库中。我想添加一些关于出版物的信息,例如:标题、摘要、出版日期和作者。问题是作者/作者可能是:注册用户(用户可能是文章的作者之一)或姓名、姓氏、机构和主页的未知人或混合注册用户和不知名的人。我如何在我的模型中实现它?

现在我已经为注册用户编写了用户配置文件。存储一些关于用户的附加信息总是好的,例如该研究所。

对于文章的作者,我有 inherit 具有 user-profile 类的类:/ 这不是好的解决方案,因为未知作者!= 注册用户,但是它们具有相同的字段:姓名、姓氏、机构、主页等。

我将非常感谢任何提示 :)

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    我会将发布链接设为Author 而不是User,然后您将设置Author 类,如:

    class Author(models.Model):
        user = models.OneToOneField(User, blank=True, null=True)
        first_name = models.CharField(max_length=50, blank=True)
        last_name = models.CharField(max_length=50, blank=True)
        # etc
    

    这个想法是,您可以将出版物一般与作者的概念相关联,然后允许作者是注册用户(在这种情况下,您将使用 user 属性中的详细信息,或者匿名用户(您将使用Author 上的其他字段)

    然后您可以向 Author 添加一些实用方法以返回正确的数据。例如:

    def get_first_name(self):
        if self.user is not None:
            return self.user.first_name
        else:
            return self.first_name
    

    您可以做很多事情来使其更加无缝,但这是大体思路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2011-05-21
      • 2019-02-05
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多