系统的目的是检查用户是否在这样的site_id中或者不向他显示HTML页面的一部分
我在这里是和群体一起做的
views.py
def is_admin(user):
return user.groups.filter(id=1).exists()
def is_client(user):
return user.groups.filter(id=4).exists()
模板(主列表)
{% for group in request.user.groups.all %}
{% if 1 == group.id %}
我想使用site_id(外键)执行此操作
这是我的第一次尝试:
views.py
def is_siteone(user):
return user.site_id.filter(id=1).exists()
模板(主列表)
{% if is_siteone %}
models.py
class Site(models.Model):
name = models.CharField(max_length=100)
address = models.CharField(max_length=255)
version = models.CharField(verbose_name='Program version', blank=False, default='1.0', max_length=20)
def __str__(self):
return self.name
def filter(self, id):
pass
但它返回以下错误error return
你对下一步有什么想法吗?
My site_id是Django的auth_user表中Site表的外键
2条答案
按热度按时间sc4hvdpw1#
看起来您试图直接从
user
对象访问site_id
属性,但site_id
不是User
模型的直接属性,而是将User
模型与Site
模型关联的外键,因此尝试执行以下操作:然后在模板中,使用如下函数:
xdnvmnnf2#
以下是我能够做到的:
views.py
模板(主列表)
我的应答器{{user.site_id }}返回文本形式的 siteone,我的应答器{{ is_siteone }}返回False
所以我修改了www.example.com中的代码views.py如下:
我指定我的上下文是这样的,所以我不在模板中添加(request.user