django是视图中的用户
我正在尝试根据登录的用户生成站点列表。如果用户是_人员,他们将获得所有站点,如果不是,他们将获得与用户属于同一公司的站点 视图永远不会返回is_staff=True。即使他们是 models.pydjango是视图中的用户,django,Django,我正在尝试根据登录的用户生成站点列表。如果用户是_人员,他们将获得所有站点,如果不是,他们将获得与用户属于同一公司的站点 视图永远不会返回is_staff=True。即使他们是 models.py class Site(models.Model): site_name = models.CharField(max_length=100, blank=False, null=False) def __unicode__(self): return self.sit
class Site(models.Model):
site_name = models.CharField(max_length=100, blank=False, null=False)
def __unicode__(self):
return self.site_name
class Company(models.Model):
name = models.CharField(max_length=100, blank=False, null=False)
users = models.ManyToManyField(User)
sites = models.ManyToManyField(Site)
def __unicode__(self):
return self.name
views.py
class SiteList(ListView):
model = Company
paginate_by = 25
def get_queryset(self):
if self.request.user.is_staff:
return Company.objects.all()
else:
user = User.objects.get(id=self.request.user.id)
return Company.objects.filter(users=user.id)
company_list.html:
{% for company in company_list %}
{% for s in company.sites.all %}
{{ s.site_name }}
{% endfor %}
{% endfor %}
可能是
Company\u objects.filter(users\u id=user.id)
?我最初就是这样做的。同样的结果,您必须确保company\u list
是模板中正确的变量名。如果使用错误的变量名,Django模板不会给您错误。您不需要使用user=user.objects.get(id=self.request.user.id)
。只需使用self.request.user
。如果在get\u queryset
方法中打印/记录用户,例如print(self.request.user)
或print(self.request.user.is\u staff)
?