Python 防止重复的用户条目-Django

Python 防止重复的用户条目-Django,python,django,Python,Django,我正在处理一个对应于多个用户的crud操作。每当我点击update函数时,就会添加一个新条目,而不会修改现有条目。有人能帮我解决这个问题吗 型号.py class Employee(models.Model): user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="employee",null=True,blank=True) name = models.CharField(max_lengt

我正在处理一个对应于多个用户的crud操作。每当我点击update函数时,就会添加一个新条目,而不会修改现有条目。有人能帮我解决这个问题吗

型号.py

class Employee(models.Model):
     user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="employee",null=True,blank=True)
     name = models.CharField(max_length=100)
     contact = models.CharField(max_length=15)
     designation = models.ForeignKey(Designation,on_delete=models.CASCADE,null=True,blank=True)
def employee_form(request,id=0):
if request.method == 'GET':
    if id == 0:       
        # req = request.user.designation 
        form = EmployeeForm(request)
    else:

        employee = Employee.objects.get(pk=id)
        if employee in request.user.employee.all():
            form = EmployeeForm(request,instance=employee)
        else:
            return redirect('/emp')
    return render(request,'employee-form.html',{'form':form})
else:
    if id==0:
        form = EmployeeForm(request,request.POST)

        if form.is_valid():
            print("Im passed")
            name = form.cleaned_data["name"]
            contact = form.cleaned_data["contact"]
            designation = form.cleaned_data["designation"]
            t = Employee(name=name,contact=contact,designation=designation)

            t.save()
            request.user.employee.add(t)
    else:

        employee = Employee.objects.get(pk=id)
        if employee in request.user.employee.all():
            form = EmployeeForm(request,request.POST,instance=employee)

            if form.is_valid():
                print("Im passed")
                name = form.cleaned_data["name"]
                contact = form.cleaned_data["contact"]
                designation = form.cleaned_data["designation"]
                t = Employee(name=name,contact=contact,designation=designation)

                t.save()

                request.user.employee.add(t)

    return redirect('/emp')
视图.py

class Employee(models.Model):
     user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="employee",null=True,blank=True)
     name = models.CharField(max_length=100)
     contact = models.CharField(max_length=15)
     designation = models.ForeignKey(Designation,on_delete=models.CASCADE,null=True,blank=True)
def employee_form(request,id=0):
if request.method == 'GET':
    if id == 0:       
        # req = request.user.designation 
        form = EmployeeForm(request)
    else:

        employee = Employee.objects.get(pk=id)
        if employee in request.user.employee.all():
            form = EmployeeForm(request,instance=employee)
        else:
            return redirect('/emp')
    return render(request,'employee-form.html',{'form':form})
else:
    if id==0:
        form = EmployeeForm(request,request.POST)

        if form.is_valid():
            print("Im passed")
            name = form.cleaned_data["name"]
            contact = form.cleaned_data["contact"]
            designation = form.cleaned_data["designation"]
            t = Employee(name=name,contact=contact,designation=designation)

            t.save()
            request.user.employee.add(t)
    else:

        employee = Employee.objects.get(pk=id)
        if employee in request.user.employee.all():
            form = EmployeeForm(request,request.POST,instance=employee)

            if form.is_valid():
                print("Im passed")
                name = form.cleaned_data["name"]
                contact = form.cleaned_data["contact"]
                designation = form.cleaned_data["designation"]
                t = Employee(name=name,contact=contact,designation=designation)

                t.save()

                request.user.employee.add(t)

    return redirect('/emp')
我非常理解它正在创建一个新条目,因为request.user.employee.add()
我已尝试使其更新(),但它抛出了一个错误update()只有一个位置参数。

然后您必须首先获取登录用户的员工,然后更新员工的所有详细信息并保存该对象

employee_obj = Employee.objects.get(user=request.user)

employee_obj.name = name
employee_obj.contact = contact
employee_obj.designation = designation
employee_obj.save()

您可以添加您的
用户
员工
模型吗?您现在可以检查吗?我已经发布了答案。谢谢您的回答!我已尝试设置,但它显示TypeError“Employee”对象不可用。您希望更新与登录用户连接的员工详细信息。你从表格上得到的所有细节,对吗?这正是我需要的!更新了我的回答表单。是否有效():打印(“Im传递”)名称=表单。已清理的回答数据[“名称”]联系人=表单。已清理的回答数据[“联系人”]名称=表单。已清理的回答数据[“名称”]员工\u对象=员工。对象。获取(用户=请求。用户)employee_obj.name=name employee_obj.contact=contact employee_obj.designation=designment employee_obj.save()错误:类型对象“employee”没有属性“object”