我目前正在使用Python 3.4.3和Django 1.8.4,我需要更新用户的一些值,这是我的代码。当我尝试保存用户时,不会保存新的权限状态。
def permissions(request):
if request.method == 'POST':
try:
username = request.POST.get('usuario')
permiso = request.POST.get('permiso')
print("usuario seleccionado", username)
print("permisos seleccionados", permiso)
if permiso == 'Administrador':
permiso = 'ad'
print("seleccion permisos de Administrador")
if permiso == 'Planificador':
permiso = 'pl'
print("seleccion permisos de Planificador")
if permiso == 'Básico':
permiso = 'bs'
print("seleccion permisos de Básico")
usp = UserProfile(user = username, role = permiso)
print("Usuario modificado",usp)
usp.save()
return HttpResponse(
json.dumps({'redirect': "/SQM/administrar_usuarios/"}),
content_type="application/json"
)
except:
return HttpResponse(
json.dumps({'redirect': "error!"}),
content_type="application/json"
)
我通过javascript发送数据。 这是我的模特。
class UserProfile(models.Model):
user = models.OneToOneField(User)
role = models.CharField(max_length=2, choices=TIPOS_USUARIO)
class Meta:
verbose_name='Perfil de usuario'
verbose_name_plural = 'Perfiles de usuario'
def __str__(self):
return self.user.username
这是我在html文件中的观点。
<div class="col-md-4">
<label>Seleccionar Usuario</label>
<select class="form-control usuarios" id="uid" >
{% for usuarios in users%}
<option data-userdata-id="{{ usuarios.id }}">{{usuarios.user}}</option>
{%endfor%}
</select>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Seleccionar Permisos</label>
<select class="form-control permisos" id="pid">
{% for roles in permisos%}
<option data-permisos-id="{{ roles }}">{{roles}}</option>
{%endfor%}
</select>
</div>
</div>
我正在尝试从1个用户更新角色状态。
我的自定义权限装饰。
def permission_required(permission_array):
def decorator(view_function):
def wrapper(request, *args, **kwargs):
if(request.user.userprofile.role in permission_array):
return view_function(request, *args, **kwargs)
else:
return HttpResponse("<h2>No cumple permisos</h2>")
return wrapper
return decorator
感谢您的智慧。
答案 0 :(得分:0)
当我试图重命名用户权限时,我也试图重新保存同一个用户,这是不允许的,因为我的模型是一对一的字段。
我替换了这一行。
usp = UserProfile(user = username, role = permiso)
这个。
user = User.objects.get(username=username)
usp = UserProfile.objects.get(user = user)
usp.role = permiso
usp.save()
非常感谢您的评论。