Допустим, у меня есть блог-сайт. И каждый блог состоит из изображений. Итак, я хочу отсортировать изображения в зависимости от того, к какому блогу они принадлежат. Но как при загрузке как автоматически передавать идентификатор блога с изображением?
Моя модель выглядит следующим образом:
class Blog(models.Model):
name = models.CharField()
blog = models.CharField()
class Photo(models.Model):
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
file = models.FileField(upload_to=get_upload_path)
Мой forms.py выглядит так:
class PhotoForm(forms.ModelForm):
class Meta:
model = Photo
fields = ('file', 'blog')
Вы видите в полях «блог». Как на самом деле передать идентификатор блога туда?
В настоящее время моя html страница для загрузки выглядит следующим образом:
<div style="margin-bottom: 20px;">
<button type="button" class="btn btn-primary js-upload-photos">
<input id="fileupload" type="file" name="file" multiple
style="display: none;"
data-url="{% url 'blog' blog.id %}"
data-form-data='{"csrfmiddlewaretoken": "{{ csrf_token }}"}'>
</div>
На самом деле этот способ загрузки изображений взят из эта замечательная статья Vitor Freitas
Теперь я хочу передать идентификатор блога в шаблон через views.py с контекстом, который я сделал. Но как мне сохранить это и передать его вместе с загружаемыми изображениями?
views.py выглядит так:
class BlogDetailView(View):
def get(self, request,**kwargs):
page = get_object_or_404(Page, pk=self.kwargs['pk'])
context = {'page':page}
return render(self.request, 'blog.html', context=context)
def post(self, request, **kwargs):
form = PhotoForm(self.request.POST, self.request.FILES)
if form.is_valid():
photo = form.save()
data = {'is_valid': True, 'name': photo.file.name, 'url': photo.file.url}
else:
data = {'is_valid': False}
return JsonResponse(data)
Так как мне связать изображение с блогом при загрузке?
Любая помощь будет высоко ценится.