【发布时间】:2020-07-08 01:05:45
【问题描述】:
我是 Django 的初学者。我的问题是我更新了我的记录,但它正在添加新记录而不是更新旧记录。
我哪里做错了?
views.py
class EditProduct(TemplateView):
template_name = 'stock/editproduct.html'
def get(self, request, product_id):
productedit = get_object_or_404(Product, pk=product_id)
data=Product.objects.get(id=product_id)
form = EditProductForm(instance=data)
args = {'form':form, 'productedit':productedit}
return render(request, self.template_name, args)
def post(self, request, product_id):
form = EditProductForm(request.POST, request.FILES)
if form.is_valid():
productadded = form.save(commit=False)
productadded.saler = request.user
productadded.pub_date = timezone.datetime.now()
productadded.save()
return redirect('stock')
else:
args = {'form': form}
return render(request, self.template_name, args)
【问题讨论】:
-
使用 UpdateView 代替模板视图,这对你来说会更容易
-
@bmons 只是将模板视图更改为 UpdateView??还是还需要一些功能?
-
您的表单是一个新实例的表单,当您希望表单更新现有实例时,您需要将要更新的 instance 传递给它 (
form = EditProductForm(request.POST, request.FILES, instance=product_to_update))。与您在get()方法中所做的相同。 -
等等你为什么定义
form两次???正如我在第一条评论中提到的那样,只需form = EditProductForm(request.POST, request.FILES, instance=data)。
标签: python django python-3.x model record