Python 防止重复的用户条目-Django
我正在处理一个对应于多个用户的crud操作。每当我点击update函数时,就会添加一个新条目,而不会修改现有条目。有人能帮我解决这个问题吗 型号.pyPython 防止重复的用户条目-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
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”