Javascript 通过Django/Python中的自定义表单更新用户数据

Javascript 通过Django/Python中的自定义表单更新用户数据,javascript,python,django,Javascript,Python,Django,我目前正在使用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("us

我目前正在使用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通过post发送数据。 这是我的模型

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

谢谢你的智慧。

当我尝试重命名用户权限时,我也尝试重新保存同一用户,这是不允许的,因为我的模型是一对一字段

我换这条线

usp = UserProfile(user = username, role = permiso)
这个在哪里

        user = User.objects.get(username=username)            
        usp = UserProfile.objects.get(user = user)            
        usp.role = permiso
        usp.save()

非常感谢您的评论。

您能提供一个输入和日志的示例吗?输入非常简单,只是一个选择>选项,正如您在html代码中看到的那样,代码运行,但在尝试时,除了无法重命名用户的前置任务外。它是否打印usp的Usario modificado?您应该检查print usp.role,然后