我是CS的第一年,如果我完全不清楚,请原谅我的无聊。
我的“产品”模型中有几个对象。现在我想在所有对象上更新相同的字段,'quantity'字段具有不同的值。但是,与updateview一样,我不想点击和退出每个产品,而是列出所有产品并为每个产品设置值,并同时更改它们。据我所知,“FormSet”可以解决这个问题吗?
我的类别模型如下所示(为产品指定)
class Category(models.Model):
category = models.CharField(max_length=30)
def __str__(self):
return self.category
我的产品型号如下所示:
class Product(models.Model):
title = models.CharField(max_length=200)
description = models.CharField(max_length=200)
category = models.ForeignKey(Category)
price = models.DecimalField(max_digits=5, decimal_places=2)
stock = models.PositiveIntegerField()
def __str__(self):
return self.title
我更新单品的更新视图如下所示:
class UpdateProductView(UpdateView):
model = Product
form_class = ProductForm
template_name = "product_form.html"
success_url = '/products'
class CreateCategoryView(FormView):
template_name = "category_form.html"
form_class = CategoryForm
我阅读了关于formset的文档,但是我必须承认我之后对如何实际使用它感觉不太聪明..任何人都可以伸出援手吗?
答案 0 :(得分:0)
在quantity
模型上找不到Product
字段,但正如我所见,您想要使用ModelFormSet。
# Generate your formset class with `modelformset_factory`
ProductFormSetClass = modelformset_factory(Product, fields=('quantity',))
# Now you can create your formset, bind data, etc
formset = ProductFormSetClass(request.POST)
formset.save()
链接的更多细节: https://docs.djangoproject.com/en/1.9/topics/forms/modelforms/#model-formsets
另外,不要忘记检查所有modelformset_factory个参数。