私はいくつかの画像で記事を作成できるフォームが必要です。私はimage
フィールドにdjango-multiuploadアプリを使用しています。私はいくつかの画像を選択することができますが、フォームを提出しようとすると画像フィールドの下にメッセージがあります:"Field is empty and field is required"
。私のミスはどこですか?イメージフィールドが空でない場合、なぜ私はそのようなメッセージを持っていますか?djangoに複数のファイルを正しく保存するには?
また、複数の画像を保存するためのアドバイスやアプリがあります。私はどんな助けにも非常に感謝しています。
models.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/')
forms.py:
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ('description',)
image = MultiFileField()
def save(self, commit=True):
instance = super(ArticleForm, self).save(commit)
for each in self.cleaned_data['image']:
Image.objects.create(image=each, article=instance)
return instance
views.py:
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)
article_add.html:画像フィールド上の
{% load widget_tweaks %}
<form method="post" action="{% url 'article_add' %}" class="article-add-form">
{% 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>
私はこのエラーがあります: 'TypeError:__init __()は予期せぬキーワード引数 'media_type''を持っています –
ああ、それはMultiMediaField()のことです。イメージはあなたではありませんか? MultiFileFieldを使用してアップロードすることができるファイルタイプをアップロードできるのは、 – zaidfazil
またはMultiImageField()です。 – zaidfazil