我仅在创建第一个用户时才收到此错误,该用户假设成为管理员用户。我该如何解决这个问题?
错误:
-- 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'))
这两段代码是我当前发生错误的地方。非常感谢任何帮助
答案 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()