“ QueryDict”对象没有属性“ first_name”

时间:2019-10-18 06:56:52

标签: django python-3.7

拥有func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { switch kind { case UICollectionView.elementKindSectionHeader: let headerView = ViewPlayerHeader.init(frame: CGRect(x: 0, y: 0, width: self.collectionViewInfo.frame.size.width, height: 50)) return headerView default: assert(false, "Unexpected element kind") } } AttributeErrorhere获取示例。我不明白是什么问题

models.py

'QueryDict' object has no attribute 'first_name'

views.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()

参数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} ) 是正确的(已调试)。

2 个答案:

答案 0 :(得分:2)

您需要像这样从request.POST获取值:

request.POST['first_name']

(如果first.name在request.POST中不可用,此方法将引发KeyError)

request.POST.get('first_name')

答案 1 :(得分:2)

您使用的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值而不是一个异常。另外,请确保模板中的键值相同。