在django中创建admin reg时,获取对象没有属性错误

时间:2016-11-16 05:59:26

标签: python django django-admin

我仅在创建第一个用户时才收到此错误,该用户假设成为管理员用户。我该如何解决这个问题?

错误:

-- Build UUIDv1 via RFC 4122. 
-- clock_seq is a random 14bit unsigned int with range [0,16384)
CREATE OR REPLACE FUNCTION form_uuid_v1(ts TIMESTAMPTZ, clock_seq INTEGER, mac MACADDR)
  RETURNS UUID AS $$
DECLARE
  t       BIT(60) := (extract(EPOCH FROM ts) * 10000000 + 122192928000000000) :: BIGINT :: BIT(60);
  uuid_hi BIT(64) := substring(t FROM 29 FOR 32) || substring(t FROM 13 FOR 16) || b'0001' ||
                     substring(t FROM 1 FOR 12);
BEGIN
  RETURN lpad(to_hex(uuid_hi :: BIGINT) :: TEXT, 16, '0') ||
         (to_hex((b'10' || clock_seq :: BIT(14)) :: BIT(16) :: INTEGER)) :: TEXT ||
         replace(mac :: TEXT, ':', '');
END
$$ LANGUAGE plpgsql;

-- Usage
select form_uuid_v1(now(), 666, '44:88:AA:DD:BB:88');

代码: views.py

response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/Johnny/Desktop/pythondjango/django/user_dashboard/apps/login/views.py", line 18, in register
    regstatus = User.userManager.register(**request.POST)
  File "/Users/Johnny/Desktop/pythondjango/django/user_dashboard/apps/login/models.py", line 43, in register
    new_user.update(user_level='admin')
AttributeError: 'User' object has no attribute 'update'

models.py:

def register(request):
    regstatus = User.userManager.register(**request.POST)
if regstatus[0]:
    request.session['user_id'] = regstatus[1]
    return redirect(reverse('dashboard:index'))
else:
    for message in regstatus[1]:
        messages.warning(request, message)
    return redirect(reverse('login:index'))

这两段代码是我当前发生错误的地方。非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

如果您只想更改对象的字段值,则应将其指定为属性,然后在其上调用.save()

new_user.user_level = 'admin'
new_user.save()

答案 1 :(得分:1)

如果您只想让第一个创建的用户成为管理员,那么您只需要

User.objects.filter(id=1).update(user_level='admin')

我假设您没有使用django.contrib.auth.models.User,因为它没有user_level字段。如果你想修复那段特定的代码,你已经粘贴了

new_user = self.create(email=email, first_name=first_name, last_name=last_name, password=pw_hash)

# Make first registered user an admin
if new_user.id == 1:
    new_user.user_level='admin')
    new_user.save()
return (True, new_user.id)

但是你真的最好使用经过试验和测试过的django regsitration /用户管理软件包。 django-allauth可能是强烈推荐的(我与它没有任何关系)

答案 2 :(得分:1)

默认django用户deosnot有一个user_level我假设您需要一个可以登录django默认管理站点的用户,它是“超级用户”所以请用超级用户和用户访问权限这样做

user = User.objects.get(id=1)
user.is_staff = True
user.is_superuser = True
user.save()