Обновление продукта Django / встроенные наборы форм, обновляющие модель
Я создаю сайт электронной коммерции, У меня проблема, когда я обновляю изображения товара, я могу обновить форму, но не могу обновить изображения. Ребята, подскажите, что я делаю не так? вот мой код:
views.py
class ProductEditView(UpdateView):
model = Product
form = ProductUpdateForm
fields='__all__'
product_metas = ProductUpdateMetaForm
template_name = 'products/update_product.html'
product_meta_formset = ProductMetaInlineFormset()
meta = product_metas
ProductMetaInlineFormset = inlineformset_factory(Product,Image,form = ProductUpdateMetaForm ,extra=5)
def form_valid(self, form):
response = super(ProductEditView, self).form_valid(form)
if self.request.method == 'POST':
product_meta_formset = self.ProductMetaInlineFormset(self.request.POST, self.request.FILES, instance=self.object)
product_meta_formset.save()
return response
def get_context_data(self, **kwargs):
context = super(ProductEditView, self).get_context_data(**kwargs)
context['product_meta_formset'] = self.ProductMetaInlineFormset(instance=self.object)
return context
forms.py
class ProductUpdateMetaForm(forms.ModelForm):
class Meta:
model = Image
fields = ['image', 'is_feature', ]
ProductMetaInlineFormset = inlineformset_factory(Product,Image,form = ProductUpdateMetaForm ,extra=5,)
<
<div class="container mt-4">
<form enctype="multipart/form-data" action= "." method="POST" class="ui form">
{% csrf_token %}
<div class="card">
<div class="card-body">
{{ form.non_form_errors }}
{{ form.as_p }}
{{ product_meta_formset.non_form_errors }}
{{ product_meta_formset.management_form}}
{% for form in product_meta_formset %}
<div class="d-flex py-1 inline {{ product_meta_formset.prefix }}">
<div>{{form.image.label}}: {{ form.image }}</div>
<div class="ml-4">{{form.is_feature.label}}: {{ form.is_feature }}</div>
{% if product_meta_formset.can_delete %}
<div class="ml-4">{{ form.DELETE }} {{ form.DELETE.label }}</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
<button type='submit' class = 'ui positive button mtop'>Update product</button>
</div>
</form>
update_product.html