在视图中访问自定义用户模型的字段

时间:2018-07-25 02:09:45

标签: django

我已经使用OneToOneField扩展了默认的用户模型,如下所示:

# models.py
class Employee(models.Model):
    USER_TYPE = (
        ('publisher', 'Publisher',),
        ('editor', 'Editor',)
    )

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    user_type = models.CharField(choices=USER_TYPE, max_length=255)

    def __str__(self):
        return self.user.username

此外,我有一个简单的模型Article

class Article(models.Model):
    title = models.CharField(max_length=255)
    text = models.TextField()
    created_by = models.ForeignKey(Employee, on_delete=models.CASCADE, null=True)

    def __str__(self):
        return self.title

我在views.py中使用基于类的通用视图(ListView),我想引用自定义用户模型,特别是检查当前登录用户user_type是否为{{ 1}},然后运行特定的查询集,否则,如果publisher运行另一个查询集,依此类推。

我对'request.user'或editor有点熟悉,但是找不到与我的案子有关的任何文档或Stackoverflow问题。

1 个答案:

答案 0 :(得分:2)

您可以使用小写的模型名称反向访问OneToOne字段。在您的情况下,它将是:

request.user.employee.user_type