Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django,如何允许多个图像上载,基于类的视图,2个表单_Django_Django Forms_Django Class Based Views - Fatal编程技术网

Django,如何允许多个图像上载,基于类的视图,2个表单

Django,如何允许多个图像上载,基于类的视图,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

我目前的问题是没有表单显示,如果我将{{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 = 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上传程序。我知道这对大多数情况可能并不理想,但对我来说很好。