Django]通过formset保存多个图像不起作用

时间:2018-06-22 10:30:36

标签: django python-3.x

我正在尝试将多个图像及其父级数据一起保存在同一模板上。

我有一个父母的模型(用于保存常规数据)和一个孩子的模型(用于保存图像)。在这种情况下,保存父母的数据非常有效。但是图像不起作用。 没有任何错误消息。

//型号

class QuotationPanchok(models.Model):
    whose = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=50, help_text='', default='')
    many = models.IntegerField(default='1', help_text='')
    design = models.CharField(max_length=3, choices=(('yes', 'yes'), ('no', 'no'),))
    sian = models.CharField(max_length=3, choices=(('yes','yes'), ('no', 'no'),))
    havefile = models.CharField(max_length=3, choices=(('yes','yes'), ('no', 'no'),))
    deadline = models.DateField(blank=True)
    addressto = models.CharField(max_length=50, default='', help_text='')
    fulltext = models.TextField(max_length=150, blank=True)
    status = models.CharField(max_length=7, choices=(('not','not'), ('finish', 'finish'),), default='not')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title


class ImagesForQuotation(models.Model):
    whose = models.ForeignKey(QuotationPanchok, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='images/', blank=True, null=True)

    def __str__(self):
        return self.whose.title + " Image"

//观看次数

def quotation_create(request):
    ImageFormset = modelformset_factory(ImagesForQuotation, fields=('image',), extra=4)
    if request.method == 'POST':
        form = QuotationCreateForm(request.POST)
        formset = ImageFormset(request.POST or None, request.FILES or None)
        if form.is_valid() and formset.is_valid():
            post = form.save(commit=False)
            post.whose = request.user
            post.save()

            for f in formset:
                try:
                    photo = ImagesForQuotation(whose=post, image=f.cleaned_date['image'])
                    photo.save()
                except Exception as e:
                    break
            return redirect('index')

    else:
        form = QuotationCreateForm()
        formset = ImageFormset(queryset=ImagesForQuotation.objects.none())

    context = {
        'form': form,
        'formset': formset,
    }
    return render(request, 'quotationapp/quotation_create.html', context)

//表格

class QuotationCreateForm(forms.ModelForm):
    class Meta:
        model = QuotationPanchok
        fields = (
            'title',
            'many',
            'design',
            'sian',
            'havefile',
            'deadline',
            'addressto',
            'fulltext',
        )

    def __init__(self, *args, **kwargs):
        super(QuotationCreateForm, self).__init__(*args, **kwargs)
        for field_name, field in self.fields.items():
            field.widget.attrs['class'] = 'form-control'

// template(quotation_create.html)

{% block content %}

<form action="" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    {{ formset.as_table }}

    <input type="submit" class="btn btn-primary" value="">
</form>

{% endblock %}

如何解决此问题? 谢谢你。

0 个答案:

没有答案