【发布时间】:2014-09-08 14:34:22
【问题描述】:
我已经为我的 Django 项目扩展了用户模型,以便从本机管理应用程序中获得更多的灵活性。我有许多不同的用户组在登录时,我想重定向到一个独特的模板。用户只会被分配到一个组。尝试执行此操作时是 views.py 文件,我收到一个 AttributeError 说明“类型对象用户没有属性‘组’。即使使用 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'))
【问题讨论】:
-
确实,User 模型类 本身没有任何组。只有 User 的实例(例如当前用户)具有组。
标签: python django django-models django-views django-urls