'QueryDict' 对象没有属性 'first_name'
'QueryDict' object has no attribute 'first_name'
有 AttributeError
'QueryDict' object has no attribute 'first_name'
从 here 获取示例。我不明白这是什么问题
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
正确(已调试)
您需要像这样从 request.POST
中获取值:
request.POST['first_name']
(如果 first_name 在 request.POST 中不可用,此方法将引发 KeyError)
或
request.POST.get('first_name')
您使用的 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
值而不是异常。还要确保模板中的键值相同。
有 AttributeError
'QueryDict' object has no attribute 'first_name'
从 here 获取示例。我不明白这是什么问题
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
正确(已调试)
您需要像这样从 request.POST
中获取值:
request.POST['first_name']
(如果 first_name 在 request.POST 中不可用,此方法将引发 KeyError)
或
request.POST.get('first_name')
您使用的 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
值而不是异常。还要确保模板中的键值相同。