BotaniQ_Q
@BotaniQ_Q

Как передать картинку через форму Django?

Создал форму где передается заголовок, текст и картинка, все передается нормально, кроме картинки, она в базе данных не сохраняется
Models:
from django.db import models
from django.utils import timezone

class Note(models.Model):
    title = models.CharField(max_length = 50)
    body = models.TextField()
    likes = models.IntegerField(default=0)
    image = models.ImageField(null=True, blank=True, upload_to="images/")
    is_active = models.BooleanField(default=True)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()




    def __str__(self):
        return "%s" % self.title



    class Meta:
        verbose_name = 'Запись'
        verbose_name_plural = 'Записи'

forms:
from django import forms

from .models import Note

class NoteForm(forms.ModelForm):

    class Meta:
        model = Note
        fields = ('title', 'body', 'image')

views:
def admin(request):
    form = NoteForm
    if request.method == "POST":
        form = NoteForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.published_date = timezone.now()
            post.save()
            
    else:
        form = NoteForm()

    return render(request, 'admin.html', locals())

html:
<div class="container-fluid">
<h1>New note</h1>
    <form method="POST">{% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class=" btn btn-default">Save</button>
    </form>

</div>
  • Вопрос задан
  • 4468 просмотров
Решения вопроса 1
syschel
@syschel
freelance/python/django/backend
Забыт параметр файлов request.FILES
form = NoteForm(request.POST, request.FILES)

А так же в HTML теге формы, забыт параметр того, что форма работает с файлами
<form method="POST" enctype="multipart/form-data">
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы