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

时间:2014-04-01 09:34:49

标签: python django models

所以,第一部分非常清楚。

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

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

如何实现?

需要建议。

问候。

1 个答案:

答案 0 :(得分:2)

您在提交表单后修改了pk。 您将customer as instance作为实例传递给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})