Объект 'QueryDict' не имеет атрибута 'first_name' - PullRequest
0 голосов
/ 18 октября 2019

Иметь AttributeError 'QueryDict' object has no attribute 'first_name' Получить примеры из здесь . Я не понимаю, в чем проблема

models.py

class Employee(models.Model):
    first_name = models.CharField(max_length=30)
    second_name = models.CharField(max_length=30)
    patronymic = models.CharField(max_length=30)
    birth_date = models.DateField()

views.py

def edit_employee_action(request, employee_id):
    if request.method == "POST":
        form = AddEmployeeForm(request.POST)
        if form.is_valid():
            edited = Employee.objects.filter(pk=employee_id)
            edited.update(
                first_name = request.POST.first_name,
                second_name = request.POST.second_name,
                patronymic = request.POST.patronymic,
                birth_date = request.POST.birth_date
            )
    else:
        form = AddEmployeeForm()
    form = AddEmployeeForm()
    return render(
        request,
        'edit_employee.html',
        context={'form': form}
    )

Параметр employee_id правильный (отлажен).

Ответы [ 2 ]

2 голосов
/ 18 октября 2019

Вы неправильно используете request.POST. Это на самом деле `словарь. Попробуйте следующее.

def edit_employee_action(request, employee_id):
    if request.method == "POST":
        form = AddEmployeeForm(request.POST)
        if form.is_valid():
            edited = Employee.objects.filter(pk=employee_id)
            edited.update(
                first_name = request.POST.get('first_name'),
                second_name = request.POST.get('second_name'),
                patronymic = request.POST.get('patronymic'),
                birth_date = request.POST.get('birth_date')
            )
    else:
        form = AddEmployeeForm()
    form = AddEmployeeForm()
    return render(
        request,
        'edit_employee.html',
        context={'form': form}
    )

Таким образом, даже если ключ не существует, вы получите значение None вместо исключения. Также убедитесь, что значения ключей в вашем шаблоне совпадают.

2 голосов
/ 18 октября 2019

вам нужно получить значение из request.POST следующим образом:

request.POST['first_name']

(этот подход вызовет KeyError, если first_name недоступен в request.POST)

или

request.POST.get('first_name')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...