2015-08-31 8 views
0

Я делаю проект django и имею одну проблему с загрузкой изображений в формах.Изображение не загружается через форму

Итак, я попытался добавить один объект с изображением, в admin это работает, но в форме на сайте - нет.

Мои взгляды:

def newbook(request, user_id): 
    form = BookAdd(request.POST or None) 
    if form.is_valid(): 
     book = form.save(commit=False) 
     book.author = get_object_or_404(User, pk=user_id) 
     book.save() 
     return redirect('../%s' % book.id) 
    return render(request, 'userbook/newbook.html', {'form': form}) 

Моя модель:

class Book(models.Model): 
    """Book is a compilation of sections with subjects.""" 
    author = models.ForeignKey(AUTH_USER_MODEL) 
    name = models.CharField(max_length=100) 
    description = models.CharField(blank=True, max_length=256) 
    cover = models.ImageField(upload_to='img/bookcovers') 

    def __str__(self): 
     return self.name 

Моя форма:

class BookAdd(ModelForm): 
    class Meta: 
     model = Book 
     fields = ('name', 'description', 'cover') 

Когда я добавить новую книгу, я получаю сообщение об ошибке "требуется поле" , возможно, для поля обложки, но изображение добавлено. Эта работа честно на локальном сервере, но не работает на pythonanywhere.com

ответ

4

Вы должны изменить код

form = BookAdd(request.POST or None) 

в

form = BookAdd(request.POST,request.FILES) 

и форме должна иметь ENCTYPE = "многочастный/form-data "

<form action="." method="post" enctype="multipart/form-data"> 
+0

Спасибо, что он работает, файл загружен без проблем. Но теперь форма показывает, что поле требуется сразу, должно быть так? –

+0

ваше поле должно быть null = True, blank = True ex: cover = models.ImageField (upload_to = 'img/bookcovers', null = True, blank = True) –

+0

Да, хорошо, это тоже работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^