我已经为我的Django项目扩展了用户模型,以便从本机管理应用程序中获得更多灵活性。我有很多不同的用户组在登录时,我想重定向到一个独特的模板。用户只会被分配到一个组。当尝试这样做是views.py文件时,我收到一个AttributeError,声明"类型对象用户没有属性' groups'。即使使用User.group.filter,也会出现“过滤器”的属性错误。发生。在模板中,我可以通过" {{user.groups.all.0}}"来检索用户的群组信息。正确。
请参阅下面的代码,了解用户模型和views.py。
扩展用户模型:
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(_('username'), max_length=30, unique=True,
validators=[validators.RegexValidator(re.compile('^[\w.@+-]+$'), _('Enter a valid username.'),
_('invalid'))])
first_name = models.CharField(_('first name'), max_length=50)
last_name = models.CharField(_('last name'), max_length=50)
email = models.EmailField(_('email address'), max_length=255, unique=True,
is_staff = models.BooleanField(_('staff status'), default=False,
is_active = models.BooleanField(_('active'), default=False,
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
USERNAME_FIELD = 'username'
#added all required fields except email
REQUIRED_FIELDS = ['first_name', 'last_name', 'email']
objects = UserManager()
Views.py:
from django.shortcuts import render, render_to_response, RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required
from User_Profile.models import User
@login_required
def home(request):
if User.groups.filter(name__in["Group1"]):
return HttpResponseRedirect(reverse('laucnh'))
答案 0 :(得分:1)
从request.user
获取当前用户:
request.user.groups.filter(name__in["Group1"])
您也可以使用exists()
:
如果QuerySet包含任何结果,则返回True,否则返回False。 这会尝试以最简单,最快速的方式执行查询 可能,但它确实执行与普通查询几乎相同的查询 QuerySet查询。
if request.user.groups.filter(name__in["Group1"]).exists():