Не возвращает файл в форму Django с помощью instance
У меня есть модель с черновиками статей. Я хочу сделать так, что бы при открытии сохраненного в бд черновика пользователь видел предзаполненную форму и мог редактировать ее. Форма подгружает все данные из бд, кроме файла. Как подгрузить файл?
models.py
class ArticleDrafts(models.Model):
author = models.ForeignKey(Author, on_delete=models.SET_NULL, verbose_name='Имя юзера', null=True)
title = models.CharField(max_length=80, verbose_name='Название')
review = models.TextField(max_length=130, verbose_name='Рецензия', null=True, blank=True)
content = models.TextField(verbose_name='Контент', blank=True)
teaser = models.ImageField(upload_to='photos/%Y/%m/%d/', verbose_name='Обложка', blank=True)
denomination = models.ForeignKey(Denomination, on_delete=models.PROTECT, verbose_name='Ветвь традиции', blank=True, null=True)
category = models.ForeignKey(Category, on_delete=models.PROTECT, verbose_name='Категория', blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True, verbose_name='Создано')
updated_at = models.DateTimeField(auto_now=True, verbose_name='Изменено')
is_to_review = models.BooleanField(default=False, verbose_name='На ревью')
def __str__(self):
return self.title
def get_view_url(self):
return reverse('view_draft', kwargs={'draft_id': self.pk})
def get_edit_url(self):
return reverse('edit_draft', kwargs={'draft_id': self.pk})
class Meta:
verbose_name = 'Черновик'
verbose_name_plural = 'Черновики'
ordering = ['-created_at']
views.py
@login_required(login_url='login')
def edit_draft(request, draft_id):
back_url = request.META.get('HTTP_REFERER')
if request.user.author.is_author:
if request.method == 'POST':
form = DraftForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('account')
else:
draft = ArticleDrafts.objects.get(pk=draft_id)
form = DraftForm(instance=draft)
context = {'form': form, 'back_url': back_url}
return render(request, 'accounts/edit_draft.html', context)
else:
return redirect('login')
tamplate.html
{% extends 'accounts/account_base.html' %}
{% block account_content %}
<h3>Изменить черновик</h3>
<div class="m-3">
<a href="{% if back_url %}{{ back_url }}{% else %}{% url 'all_drafts' %}{% endif %}"><-Обратно</a>
</div>
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.non_field.errors }}
{{ form.title }}
{{ form.title.errors }}
{{ form.teaser }}
{{ form.teaser.errors }}
{{ form.content }}
{{ form.content.errors }}
{{ form.review }}
<div class="row m-2">
<div class="col">
{{ form.denomination }}
</div>
<div class="col">
{{ form.category }}
</div>
<div class="col">
<div class="form-check form-switch">
{{ form.is_to_review }}
<label class="form-check-label" for="{{ form.is_to_review.id_for_label }}">Отправить на ревью главреду?</label>
</div>
</div>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-outline-success">Сохранить</button>
</div>
</form>
{% endblock %}