Django:在我的模型中包含标准用户表作为外键?

时间:2015-10-27 04:57:47

标签: python django

我正在设计一个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前端,只关心管理员。我希望用户能够登录管理员,查看他们作为主要评估员的所有试验,并编辑这些试验。我不确定是否最好使用用户模型执行此操作。

1 个答案:

答案 0 :(得分:0)

而不是两个外键,从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

的更多信息

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

如果您想通过登录用户过滤django admin,请参阅this question