我已经使用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问题。
答案 0 :(得分:2)
您可以使用小写的模型名称反向访问OneToOne
字段。在您的情况下,它将是:
request.user.employee.user_type