Django 内联表单集更新模型

标签 django inline-formset

我正在绞尽脑汁地尝试让 Django 的表单集在更新模型时正常工作。

我有 2 个模型:ProductProductSize。添加或编辑 Product 时,我使用内联表单集将我的 ProductSize 链接到 Product。添加对象很好,但是当我尝试编辑 Product 时,我无法提交表单。我在下面的 print 中得到 [{'id': ['This field is required.']}] 输出。

以下是我的观点:

class ProductAdd(AddModelView):
    model = Product
    form_class = UpdateProductForm
    template_name = 'intake_goods_form.jinja'
    title = 'Add Product Type'
    formset_class = ProductSizesFormSet

    def form_valid(self, form):
        obj = form.save()
        formset = self.formset_class(self.request.POST)
        if formset.is_valid():
            formset.instance = obj
            formset.save()
        else:
            print(formset.errors)
            return self.form_invalid(form)
        return super().form_valid(form)

    def get_context_data(self, **kwargs):
        if self.request.POST:
            formset = self.formset_class(self.request.POST, instance=self.object)
        else:
            formset = self.formset_class(instance=self.object)
        return super().get_context_data(formsets=formset, **kwargs)


product_type_add = ProductAdd.as_view()


class ProductEdit(ProductAdd, UpdateModelView):
    model = Product
    form_class = UpdateProductForm


product_type_edit = ProductEdit.as_view()

这是我的表格:

class UpdateProductForm(SVModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    class Meta:
        model = Product
        exclude = {'material'}


class ProductSizeForm(SVModelForm):
    title = 'Product Type Sizes'

    class Meta:
        model = ProductSize
        fields = ['sku_code', 'bar_code', 'size']


ProductSizesFormSet = forms.inlineformset_factory(Product, ProductSize, ProductSizeForm, extra=1, can_delete=False)

有人可以帮忙吗?

谢谢

最佳答案

好吧,我找到了解决方案,但从我发布的问题中不可能找出答案,抱歉。

在模板中,我仅循环遍历表单集的可见字段。所以当然,ID 不包括在内。

如果需要,请确保在模板中包含 formset.id 字段。

关于Django 内联表单集更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237196/

相关文章:

python - 如何更改 django 子类中的 max_length ?

django - 使用内联表单集进行Django表单验证

python - 在非父模型的内联表单集中更改模型字段的查询集

django - 我们如何为 Django 表单中的浮点字段提供占位符?

mysql - 我想知道 Django 查询集中的排名

python - 使用干净的更改 Django 表单集中的字段

python - Django - 将表单验证添加到 inlineformset_factory

python - Django:动态内联表单,根据用户选择进行过滤

javascript - Django 中是否有一种惯用的方法来编写不引人注目的 JavaScript 和/或进行 AJAX 表单提交?

python - 通过某个 "type"(属性)的最新记录提高QuerySet过滤器的效率