0

我是 CS 的第一年,如果我完全不清楚,请原谅我的菜鸟。

我的“产品”模型中有几个对象。现在我想更新所有对象上的相同字段,即具有不同值的“数量”字段。但是,我不想像使用 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 的文档,但我必须承认,我对之后如何实际使用它并没有感觉更聪明.. 有人可以帮忙吗?

4

1 回答 1

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参数。

于 2016-07-18T16:38:35.620 回答