【问题标题】:instance is not updated, using forms save () Django实例未更新,使用表单save() Django
【发布时间】:2021-02-10 01:01:57
【问题描述】:

实例没有更新,使用forms save() Django。

有人可以帮忙吗?

save() 得到了一个意外的关键字参数 'cpnj'

观看次数

cliente = Cliente.objects.get(user=request.user.id, pk=pk)
 if request.method == 'POST':
        form = ClienteForm(request.POST)
        if form.is_valid():
            form.update(instance=cliente, validated_data=form.cleaned_data)
            return redirect('clienteEdit', pk)

表格

def update(self, instance, validated_data, context):
        print(instance)
        instance.save(**validated_data)

【问题讨论】:

    标签: python python-3.x django django-views django-forms


    【解决方案1】:

    您的模型对象 Cliente 和表单 ClientForm 在其中一个字段中看起来不匹配。您的模型对象Cliente 是否有一个名为 cpnj 的字段?

    为了更新,我建议您像这样手动更改字段:

    cliente = Cliente.objects.get(user=request.user.id, pk=pk)
     if request.method == 'POST':
            form = ClienteForm(request.POST)
            if form.is_valid():
                cliente.cpnj = form.cleaned_data['cpnj']
                cliente.save()
                return redirect('clienteEdit', pk)
    

    【讨论】:

    • 是的。是的。类 ClienteForm(forms.Form): cpnj = forms.CharField()
    • 类 Cliente(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) cpnj = models.CharField(max_length=14)
    • 我正在使用 forms.Form
    • 我在答案中添加了一个编辑,看看是否有效,请注意 form.cleaned_data['cpnj'] 可能不正确,因为我不知道它在 ClienteForm 类中的名称
    猜你喜欢
    • 1970-01-01
    • 2015-09-20
    • 2015-05-21
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多