首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于用户组的Django全局变量

基于用户组的Django全局变量
EN

Stack Overflow用户
提问于 2018-05-24 09:58:52
回答 4查看 288关注 0票数 0

在我的Django项目中,我有一个从Django外部填充的数据库,但需要Django功能以用户友好的方式显示数据库中的数据。遗留数据库结构如下:

代码语言:javascript
运行
AI代码解释
复制
class SomeModel(models.Model):
#some fields
group_access = models.ForeignKey(AccessGroup,on_delete=models.CASCADE()

class AccessGroup(models.Model):
group_name = models.CharField(max_length=200)

用户具有与分配给特定用户的组名有许多关系的自定义用户配置文件:

代码语言:javascript
运行
AI代码解释
复制
class CustomUser(models.Model):
#some values
     projects = models.ManyToManyField(AccessGroup)

目前,我能够显示来自用户访问的所有组的数据,但我正在寻找的是一种创建下拉菜单的方法,以便用户可以在组之间切换,而无需在每个视图上注销或重新进入组。

EN

回答 4

Stack Overflow用户

发布于 2018-05-24 10:49:28

您可以尝试如下所示:

代码语言:javascript
运行
AI代码解释
复制
AccessGroup.objects.filter(CustomUser__pk=1)

代码语言:javascript
运行
AI代码解释
复制
CustomUser.objects.filter(AccessGroup__group_name='GropName')

https://docs.djangoproject.com/en/2.0/topics/db/examples/many_to_many/

票数 0
EN

Stack Overflow用户

发布于 2018-05-24 12:41:18

您可以扩展django用户模型,例如

代码语言:javascript
运行
AI代码解释
复制
from django.contrib.auth.models import User

class CustomUser(models.Model):
    projects = models.ManyToManyField(AccessGroup)


class UserProfile(models.Model):
    user = models.OneToOneField(User, unique=True)
    custom_user = models.ForeignKey(CustomUser, unique=False)

class SomeModel(models.Model):
    #some fields
    group_access = models.ForeignKey(AccessGroup,on_delete=models.CASCADE()

class AccessGroup(models.Model):
    group_name = models.CharField(max_length=200)

然后像下面这样将数据放到视图中

代码语言:javascript
运行
AI代码解释
复制
def index(request):
    AccessGroup.objects.filter(user__id=persion(request.user).id)
票数 0
EN

Stack Overflow用户

发布于 2018-05-25 12:01:53

我假设您知道如何获得组的列表,并且正在寻找如何将此列表放入模板中。如果没有,请让我知道,我也会解释的。

如果你想把一个全局变量放到模板中,有3个主要的选择:

  1. 创建一个自定义模板标记,该标记将当前用户作为输入,并生成此列表作为输出。
  2. 使用中间件来生成列表,并将其附加到每个请求的当前上下文中
  3. 在您的user类上使用一个方法,或者将其混合在一起(如果您使用自定义user类,则非常容易),并且只需在您的模板中将该方法调用为user.method。记住从方法调用中排除括号(仅在模板中),并记住此方法不应接受除self以外的任何参数。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50506393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档