【问题标题】:Django: Including standard User table as foreign key in my models?Django:在我的模型中包括标准用户表作为外键?
【发布时间】:2015-10-27 04:57:47
【问题描述】:

我正在设计一个 Django 1.8 应用程序,其中我有试验和评估者的概念。我将有六名评估员,他们将使用 Django 管理员登录并进行评估。

我希望每个试验都有两名附加的评估员。如何使用 models.py 中的 Django User 模型来确保评估者是用户,并且可以使用用户的全部权力进行管理?

现在我有这个,其中评估者不是用户,而只是普通模型:

class Assessor(models.Model):
    name = models.CharField(max_length=200)

class Trial(models.Model):
    title = models.CharField(max_length=800)
    publication_date = models.DateField()
    first_assessor = models.ForeignKey(assessor)
    second_assessor = models.ForeignKey(assessor)

我希望评估者是用户,以便我可以通过用户表以通常的方式管理他们,但我不知道如何进行此更改。

他们可能不需要在标准用户属性之上的任何自定义字段。

(注意:我不需要管理员内的全面权限管理,任何评估员都可以编辑试用版。)

更新:抱歉,这很难解释!我根本不关心 Django 前端,只关心管理员。我希望用户能够登录到管理员,查看他们作为主要评估者的所有试验,并编辑这些试验。我不确定是否最好使用 User 模型执行此操作。

【问题讨论】:

    标签: python django


    【解决方案1】:

    添加从 Trail 到用户的多对多关系,而不是两个外键。稍后,如果您愿意,可以将更多评估员添加到跟踪中。

    你可以这样做:

    from django.contrib.auth.models import User
    class Trial(models.Model):
        title = models.CharField(max_length=800)
        publication_date = models.DateField()
        assessors = models.ManyToManyField(User,related_name="trials")
    

    您可以将评估员添加到试用版,例如:

    trial = Trial.objects.get(id=give-trial-id)
    user = User.objects.get(id=give-assessor-id)
    trail.assessors.add(user)
    

    您可以获取有关 manytomany 的更多信息here

    我刚刚看到您的更新。任何登录到管理员的人都可以访问所有模型的所有对象。 在您的情况下,所有登录到 admin 的评估员都可以访问所有跟踪,无论他们是否分配给它。

    如果您想通过登录用户过滤 django 管理员,请参考 this question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 2018-09-05
      • 2018-07-04
      • 2011-08-08
      • 2012-06-28
      • 2017-10-09
      • 1970-01-01
      相关资源
      最近更新 更多