0
添付する画像を最大5つ持つフォームセットを作成しました。Django Formsetに必須フィールドとオプションフィールドが必要です
1からが、私は検証は、ユーザーが任意の画像(ValidationError('atleast 1 image is required'))
を添付していないときにのみ実行したい、
2 -このプログラムはまた、とき1、または2ユーザーが保存できるようにされていません、私は本当に必要な3つの画像が添付されています。画像が1枚ある場合や2枚の場合は、それを保存する必要があります。私はまた、テンプレート
テンプレート
<form enctype="multipart/form-data" action="" method="post"> {% csrf_token %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{{ form.as_p }}
{{ formset.management_form }}
<div class="link-formset">
{% for choice in formset %}
<div>
<label>{{ choice.media }}</label>
<input type="radio" name="featured">{{choice.featured_image.label }}
</div>
{% endfor %}
</div>
<input type="submit" value="{{ submit_btn }}">
</form>
形でdispalyed 1であることを選択した画像を作るために、デフォルトで選択される1つのラジオボタンを作成する必要があり -
3 .py
class ProductImagesForm(forms.ModelForm):
media = forms.ImageField(label='Image', required=True)
featured_image = forms.BooleanField(initial=True, required=True)
class Meta:
model = ProductImages
fields = ['media', 'featured_image']
ImagesFormset = modelformset_factory(ProductImages, fields=('media', 'featured_image'), extra=5)
views.py
def form_invalid(self, form, formset):
return self.render_to_response(self.get_context_data(form=form, formset=formset))
def form_valid(self, form, formset):
return HttpResponseRedirect(self.get_success_url())
def get(self, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
formset = ImagesFormset(queryset=ProductImages.objects.none())
return self.render_to_response(self.get_context_data(form=form, formset=formset))
def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
formset = ImagesFormset(self.request.POST, self.request.FILES or None)
form_valid = form.is_valid()
formset_valid = formset.is_valid()
if (form.is_valid() and formset.is_valid()):
seller = self.get_account()
form.instance.seller = seller
self.object = form.save()
images_set = formset.save(commit=False)
for img in images_set:
img.product = self.object
img.save()
formset.save()
return self.form_valid(form, formset)
else:
return self.form_invalid(form, formset)
があることを確認しますが、そこにあるとき、まだそれが保存されますmodelformset_factory
に
min_num
とmax_num
に渡すことができます画像が添付されていません – dunguビューでフォームセットを検証していますか? –
ええ、上記のviews.pyで私の検証を見ることができます – dungu