如何克隆 Django 模型实例对象并在 Django 表单上显示?

Posted

技术标签:

【中文标题】如何克隆 Django 模型实例对象并在 Django 表单上显示?【英文标题】:How do I clone a Django model instance object and show on the Django forms? 【发布时间】:2014-05-11 23:48:33 【问题描述】:

所以,第一部分很清楚。

customer = Customer.objects.get(pk=1)
customer.pk = None
customer.save() # Saved a new instance. 
# But i want to modify it

这里的问题是我想在保存之前修改该实例。为此,我必须在 html 的表单上呈现它。

如何实现?

需要建议。

您好。

【问题讨论】:

【参考方案1】:

您在提交表单后修改 pk。 您将客户作为实例传递给 CustomerForm 并让表单保存一个新对象。比如:

    class CustomerForm(forms.ModelForm):
        class Meta:
            model = Customer

    def my_view(request):
        customer = Customer.objects.get(pk=1)
        customer.pk = None
        if request.method == 'POST':
            form = CustomerForm(instance=customer)
            if form.is_valid():
                customer = form.save()
                return redirect('...')
        else:
            form = CustomerForm(instance=customer)
        return render(request, 'template', 'form': form)

【讨论】:

以上是关于如何克隆 Django 模型实例对象并在 Django 表单上显示?的主要内容,如果未能解决你的问题,请参考以下文章

遍历模型字段 - Django

Django模板语言相关内容 Djan

2.django入场啦

如何在 Django 中序列化模型实例?

django搭建个人博客

如何使用 Django Querysets 和 Q() 与相同模型类型的对象进行比较?