Django,如何允许多个图像上载,基于类的视图,2个表单
我目前的问题是没有表单显示,如果我将{{form.as_p}}添加到create.html页面,那么只有TradeForm显示,没有任何图像 我引用了这个问题: views.pyDjango,如何允许多个图像上载,基于类的视图,2个表单,django,django-forms,django-class-based-views,Django,Django Forms,Django Class Based Views,我目前的问题是没有表单显示,如果我将{{form.as_p}}添加到create.html页面,那么只有TradeForm显示,没有任何图像 我引用了这个问题: views.py class TradeCreateView(CreateView): template_name = "tj/cp/trade/create.html" form_class = TradeForm form_class_image = ImageForm queryset = Tra
class TradeCreateView(CreateView):
template_name = "tj/cp/trade/create.html"
form_class = TradeForm
form_class_image = ImageForm
queryset = Trade.objects.all()
def post(self, request, *args, **kwargs):
ImageFormSet = modelformset_factory(Image, form=ImageForm, extra=3)
formset = ImageFormSet(request.POST, request.FILES, queryset=Image.objects.none())
if TradeForm.is_valid() and formset.is_valid():
trade_form = TradeForm.save(commit=False)
trade_form.user = request.user
trade_form.save()
for form in formset.cleaned_data:
image = form['address']
photo = Image(trade=trade_form, image=image)
photo.save()
def form_valid(self, form):
print(form.cleaned_data)
return super().form_valid(form)
forms.py
class TradeForm(forms.ModelForm):
class Meta:
model = Trade
fields = [
'user',
'target_size',
'target_entry',
...
]
# exclude = ['user',]
class ImageForm(forms.ModelForm):
address = forms.ImageField(label='Image')
class Meta:
model = Image
fields = ('address',)
models.py
class Trade(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=False)
comments = models.TextField(max_length=10000, blank=True, null=True)
def get_image_filename(instance, filename):
title = instance.post.title
slug = slugify(title)
return "uploads/%s-%s" % (slug, filename)
class Image(models.Model):
trade = models.ForeignKey(Trade, blank=True, null=True, default=None, on_delete=models.CASCADE)
address = models.ImageField(upload_to='uploads', blank=True, null=True, verbose_name='Image')
title = models.CharField(max_length=100, null=True, blank=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=False)
def __unicode__(self):
return self.title
create.html
<form id="TradeCreateView" method="post" action="." enctype="multipart/form-data">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
{{ form.as_p }}
{% endfor %}
<input type="submit" name="submit" value="Submit" />
</form>
{%csrf_令牌%}
{{formset.management_form}
{formset%中表单的%s}
{{form.as_p}}
{%endfor%}
嘿,你能解决你的问题吗?如果是,请分享您的解决方案?这真的会很有帮助的。实际上我没有。。我所做的是使用django Ckeditor rich textform作为我的imagine上传程序。我知道这对大多数情况可能并不理想,但对我来说很好。