Запретить повторяющиеся записи пользователя - Django - PullRequest
0 голосов
/ 17 марта 2020

Я работаю над грубой операцией, которая соответствует нескольким пользователям. Всякий раз, когда я нажимаю на функцию обновления, новая запись добавляется без изменения существующей. Может ли кто-нибудь помочь мне с этим?

models.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)

views.py

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 (), выдает ошибку update () имеет только 1 позиционный аргумент.

1 Ответ

0 голосов
/ 17 марта 2020

Затем вы должны сначала получить Employee с вошедшим в систему пользователем, затем обновить все детали Employee и сохранить этот объект ...

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

employee_obj.name = name
employee_obj.contact = contact
employee_obj.designation = designation
employee_obj.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...