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

Update user data trough custom form in Django/Python

本文关键字:更新 表单 用户 用户数 数据 自定义 Django Python 通过      更新时间:2023-09-26

im目前使用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()

非常感谢您的评论。