Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
Python 在django中使用表单保存多个图像_Python_Django_Python 3.x_Django 1.10 - Fatal编程技术网

Python 在django中使用表单保存多个图像

Python 在django中使用表单保存多个图像,python,django,python-3.x,django-1.10,Python,Django,Python 3.x,Django 1.10,在django中保存多个图像的最佳方法是什么 我有文章模式,有两个字段:描述和图像。我尝试了下一个代码,但我的当前表单只允许用户上传一个图像文件。我需要的形式,用户可以创建几个图像的文章 也许有人可以给好的例子或应用提供建议。我将非常感谢任何帮助 型号。py: class Article(models.Model): description = models.TextField(_('Description')) class Image(models.Model): artic

在django中保存多个图像的最佳方法是什么

我有
文章
模式,有两个字段:
描述
图像
。我尝试了下一个代码,但我的当前表单只允许用户上传一个图像文件。我需要的形式,用户可以创建几个图像的文章

也许有人可以给好的例子或应用提供建议。我将非常感谢任何帮助

型号。py:

class Article(models.Model):
    description = models.TextField(_('Description'))

class Image(models.Model):
    article= models.ForeignKey(Article, on_delete=models.CASCADE)
    image = models.FileField(_('Image'), upload_to='images/%Y/%m/%d/')
class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ('description', )

    images = MultiFileField()

    def save(self, commit=True):
        instance = super(ArticleForm, self).save(commit)
        for each in self.cleaned_data['images']:
            Image.objects.create(image=each, article=instance)
        return instance
def article_add(request):
    data = dict()
    if request.method == 'POST':
        article_form = ArticleForm(request.POST, request.FILES)
        if article_form.is_valid():
            article = article_form.save(commit=False)
            ******
            article.save()
            data['form_is_valid'] = True
            articles = Article.objects.all
            context = {'articles': articles}
            context.update(csrf(request))
            data['html_article'] = render_to_string('project/article_list.html', context)
        else:
            data['form_is_valid'] = False
    else:
        article_form = ArticleForm()
    context = {'article_form': article_form}
    data['html_article_form'] = render_to_string('project/article_add.html', context, request=request)
    return JsonResponse(data)
{% load widget_tweaks %}

<form method="post" action="{% url 'article_add' %}" class="article-add-form dropzone">
    {% csrf_token %}

    {% for field in article_form %}
    <div class="form-group{% if field.errors %} has-danger{% endif %}">
       <label class="form-control-label" for="{{ field.id_for_label }}">{{ field.label }}</label>
       {% render_field field class="form-control" %}
       {% for error in field.errors %}
          <div class="form-control-feedback">{{ error }}</div>
       {% endfor %}
    </div>
    {% endfor %}

    <button type="submit">Submit</button>
</form>
forms.py:

class Article(models.Model):
    description = models.TextField(_('Description'))

class Image(models.Model):
    article= models.ForeignKey(Article, on_delete=models.CASCADE)
    image = models.FileField(_('Image'), upload_to='images/%Y/%m/%d/')
class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ('description', )

    images = MultiFileField()

    def save(self, commit=True):
        instance = super(ArticleForm, self).save(commit)
        for each in self.cleaned_data['images']:
            Image.objects.create(image=each, article=instance)
        return instance
def article_add(request):
    data = dict()
    if request.method == 'POST':
        article_form = ArticleForm(request.POST, request.FILES)
        if article_form.is_valid():
            article = article_form.save(commit=False)
            ******
            article.save()
            data['form_is_valid'] = True
            articles = Article.objects.all
            context = {'articles': articles}
            context.update(csrf(request))
            data['html_article'] = render_to_string('project/article_list.html', context)
        else:
            data['form_is_valid'] = False
    else:
        article_form = ArticleForm()
    context = {'article_form': article_form}
    data['html_article_form'] = render_to_string('project/article_add.html', context, request=request)
    return JsonResponse(data)
{% load widget_tweaks %}

<form method="post" action="{% url 'article_add' %}" class="article-add-form dropzone">
    {% csrf_token %}

    {% for field in article_form %}
    <div class="form-group{% if field.errors %} has-danger{% endif %}">
       <label class="form-control-label" for="{{ field.id_for_label }}">{{ field.label }}</label>
       {% render_field field class="form-control" %}
       {% for error in field.errors %}
          <div class="form-control-feedback">{{ error }}</div>
       {% endfor %}
    </div>
    {% endfor %}

    <button type="submit">Submit</button>
</form>
视图。py:

class Article(models.Model):
    description = models.TextField(_('Description'))

class Image(models.Model):
    article= models.ForeignKey(Article, on_delete=models.CASCADE)
    image = models.FileField(_('Image'), upload_to='images/%Y/%m/%d/')
class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ('description', )

    images = MultiFileField()

    def save(self, commit=True):
        instance = super(ArticleForm, self).save(commit)
        for each in self.cleaned_data['images']:
            Image.objects.create(image=each, article=instance)
        return instance
def article_add(request):
    data = dict()
    if request.method == 'POST':
        article_form = ArticleForm(request.POST, request.FILES)
        if article_form.is_valid():
            article = article_form.save(commit=False)
            ******
            article.save()
            data['form_is_valid'] = True
            articles = Article.objects.all
            context = {'articles': articles}
            context.update(csrf(request))
            data['html_article'] = render_to_string('project/article_list.html', context)
        else:
            data['form_is_valid'] = False
    else:
        article_form = ArticleForm()
    context = {'article_form': article_form}
    data['html_article_form'] = render_to_string('project/article_add.html', context, request=request)
    return JsonResponse(data)
{% load widget_tweaks %}

<form method="post" action="{% url 'article_add' %}" class="article-add-form dropzone">
    {% csrf_token %}

    {% for field in article_form %}
    <div class="form-group{% if field.errors %} has-danger{% endif %}">
       <label class="form-control-label" for="{{ field.id_for_label }}">{{ field.label }}</label>
       {% render_field field class="form-control" %}
       {% for error in field.errors %}
          <div class="form-control-feedback">{{ error }}</div>
       {% endfor %}
    </div>
    {% endfor %}

    <button type="submit">Submit</button>
</form>
文章\u add.html:

class Article(models.Model):
    description = models.TextField(_('Description'))

class Image(models.Model):
    article= models.ForeignKey(Article, on_delete=models.CASCADE)
    image = models.FileField(_('Image'), upload_to='images/%Y/%m/%d/')
class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ('description', )

    images = MultiFileField()

    def save(self, commit=True):
        instance = super(ArticleForm, self).save(commit)
        for each in self.cleaned_data['images']:
            Image.objects.create(image=each, article=instance)
        return instance
def article_add(request):
    data = dict()
    if request.method == 'POST':
        article_form = ArticleForm(request.POST, request.FILES)
        if article_form.is_valid():
            article = article_form.save(commit=False)
            ******
            article.save()
            data['form_is_valid'] = True
            articles = Article.objects.all
            context = {'articles': articles}
            context.update(csrf(request))
            data['html_article'] = render_to_string('project/article_list.html', context)
        else:
            data['form_is_valid'] = False
    else:
        article_form = ArticleForm()
    context = {'article_form': article_form}
    data['html_article_form'] = render_to_string('project/article_add.html', context, request=request)
    return JsonResponse(data)
{% load widget_tweaks %}

<form method="post" action="{% url 'article_add' %}" class="article-add-form dropzone">
    {% csrf_token %}

    {% for field in article_form %}
    <div class="form-group{% if field.errors %} has-danger{% endif %}">
       <label class="form-control-label" for="{{ field.id_for_label }}">{{ field.label }}</label>
       {% render_field field class="form-control" %}
       {% for error in field.errors %}
          <div class="form-control-feedback">{{ error }}</div>
       {% endfor %}
    </div>
    {% endfor %}

    <button type="submit">Submit</button>
</form>
{%load widget\u tweaks%}
{%csrf_令牌%}
{文章中字段的%u形式%}
{{field.label}
{%render_field class=“form control”%}
{%字段中有错误。错误%}
{{error}}
{%endfor%}
{%endfor%}
提交

如果你想为一篇文章提供多张图片,也许你可以使用django multi upload

此外,您可能需要为图像创建单独的模型,并将其与文章模型相关联

class Image(models.Model):
    image = models.FileField()
    article = models.ForeignKey(Article)
关于表格的其余部分在文档中。 另外,从文章模型中删除图像字段。Django MultiUpload显示了如何使用单个表单上载多个图像

表单集也很有用,

编辑

在html格式的表单中添加enctype=“多部分/表单数据”

<form method="post" action="{% url 'article_add' %}" class="article-add-form dropzone" enctype="multipart/form-data">


您需要的是一个表单集。此外,您可能必须将
用户
指定为此模型的外键。我也考虑过formset,但正如我在formset中所理解的那样,我需要为每个图像文件创建一个单独的字段。我需要按一个字段加载图像。你有什么想法吗?也许有一些有用的应用?谢谢你的链接。我对django multiupload应用程序有一些问题。请再次查看我的帖子。我有图像场的形式。现在,使用这个应用程序后,我可以加载几个图像,但当我提交表单时,它会出现错误,因为“需要图像字段”,并清理字段。我的错在哪里?第二个问题:是否可以使用相同的表单编辑文章。假设我想在将来更新文章信息(删除旧图片或添加新图片)。我不明白你的意思。你是什么意思,我的朋友对不起,伙计。。。我在想别的事情。。。为了澄清,如果你需要更多的帮助,那么再发布一个关于你所做的事情的问题。。同样,它可以做=>编辑文章和上传图片。但是最好再发一个问题,而不是在这里问……你对答案满意吗?我不认为再问同样的问题是个好主意。它将被复制。这当然很伤心,但无论如何都要感谢你。。。