как добавить изображение в пост блога django
Я работаю над блогом с django, и одна из последних вещей, которые я пытаюсь выяснить, - это как разместить изображение в моем блоге. Я уже могу разместить некоторый текст очень красиво через мою админ-панель, и то, что я хочу сейчас, это возможность добавить изображение к сообщению. Я полный новичок, так что извини любые основные ошибки.
Я придумал такую модель:
class Post(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(unique=True, max_length=255)
description = models.CharField(max_length=255)
content = models.TextField()
published = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
image = models.ImageField(upload_to='media')
class Meta:
ordering = ['-created']
def __str__(self):
return ('%s') % self.title
def get_absolute_url(self):
return reverse('blog.views.post', args=[self.slug])
Хотя, когда я пытаюсь это сделать, я получаю ошибку " нет такого столбца blog_post.имидж', даже после выполнения manage.py sqlflush и повторная синхронизация мой дБ.
И у меня есть такая точка зрения:
def index(request):
posts = Post.objects.filter(published=True)
return render(request, 'blog/index.html', {'posts': posts})
В принципе, я хотел бы иметь возможность добавлять изображение в сообщение и шаблон для его отображения.
Я пробовал admin-files и различные другие приложения и пробовал так много фрагментов кода с чужого сайта, но просто ничего не работает, так что это не из-за отсутствия попыток. Самое близкое к тому, что я хочу найти здесь: http://drumcoder.co.uk/blog/2010/may/12/django-blog-images/ (что также не сработало для меня), просто я хочу этого быть частью моей почтовой модели.
Есть ли простой способ сделать это? Как должны выглядеть модель и шаблон? Любая помощь будет очень признательна, спасибо.2 ответа:
Предполагая, что вы добавили
image
после того, как вы сделали./manage.py syncdb
. Затем либо удалите базу данных и syncdb снова (не рекомендуется). Или добавьте Django South для миграции данных (предпочтительно).Как работать с Югом? Когда вы добавите Юг в свой проект. Сначала удалите поле
image
, чтобы ваша модель выглядела точно так же, как и раньше. Затем выполните следующие действия:Теперь добавьте поле
- python manage.py convert_to_south myapp.блог
- python manage.py мигрируйте myapp.блог 0001 -- подделка
image
обратно в модельPost
и выполните следующие действия:
- python manage.py schemamigration myapp.блог --auto
- python manage.py мигрируйте myapp.блог
На основании того, что экземпляр ImageField по умолчанию содержит столбцы varchar(100) , Вы можете просто добавить столбец varchar(100) с именем
image
в таблицу APPNAME_post.Это можно сделать с помощью соответствующего графического интерфейса (например, pgAdmin III для PostgreSQL) или через интерфейс командной строки (например, psql) с командой, подобной следующей:
Лично я бы согласился с предложением Амира использовать Юг. Это может быть больше работы, чтобы настроить его, но это будет будьте неоценимы для любых будущих изменений схемы.ALTER TABLE APPNAME_post ADD COLUMN image varchar(100);