Sop*_*hie 3 forms django django-views
如何更新现有记录,而不是添加一个新问题.现在我正在尝试编辑编辑表单中的现有产品数据并保存新的更改.但是我没有更新现有的产品数据,而是获得了一个新产品,所以一切都在重复.创建新产品而不是更新现有数据.我该怎么做才能解决这个问题?
这是我的代码:
@login_required
def edit(request, id=None):
if request.method == 'POST':
form = ProductForm(request.POST)
if form.is_valid():
product = form.save( commit=False )
product.save()
return HttpResponseRedirect( '/details/%s/' % ( product.id ) )
Run Code Online (Sandbox Code Playgroud)
Eternicode,谢谢你的好答案,代码现在工作正常,数据不重复,因为我在编辑日期后保存表单.根据你的回复,这是有效的:
@login_required
def edit(request, id=None):
if request.method == 'POST':
product = Product.objects.get(id__exact=id)
form = ProductForm(request.POST, instance=product)
print "PRODUCT POST"
if form.is_valid():
print "Display Form"
product = form.save( commit=False )
product.save()
return HttpResponseRedirect( '/details/%s/' % ( product.id ) )
Run Code Online (Sandbox Code Playgroud)
为了更新现有对象,您必须将该对象作为instance
kwarg提供给表单.来自文档:
>>> from django.forms import ModelForm
# Create the form class.
>>> class ArticleForm(ModelForm):
... class Meta:
... model = Article
# Creating a form to add an article.
>>> form = ArticleForm()
# Creating a form to change an existing article.
>>> article = Article.objects.get(pk=1)
>>> form = ArticleForm(instance=article)
Run Code Online (Sandbox Code Playgroud)