我正在使用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.image',即使在执行manage.py sqlflush并重新同步我的数据库之后。
我有这个观点:
def index(request):
posts = Post.objects.filter(published=True)
return render(request, 'blog/index.html', {'posts': posts})
基本上我想选择将图像添加到帖子和模板来显示它。
我已经尝试过管理员文件和各种其他应用程序,并尝试过来自其他人网站的大量代码片段但是没有任何作用,所以这不是因为没有尝试。最接近我想要的是在这里找到:http://drumcoder.co.uk/blog/2010/may/12/django-blog-images/(这对我来说也不起作用),只是因为我希望它成为我的Post模型的一部分。
有一种简单的方法吗?模型和模板如何看起来像?非常感谢任何帮助,谢谢。
答案 0 :(得分:3)
假设您在完成image
后添加了./manage.py syncdb
。然后再次删除数据库和syncdb(不首选)。或者添加Django South进行数据迁移(首选)。
如何与南方合作?在项目中添加south时。首先删除image
字段,以使您的模型看起来与以前完全相同。然后执行以下步骤:
现在将image
字段添加回您的Post
模型并执行以下步骤:
答案 1 :(得分:1)
在ImageField instance default to varchar(100) columns的基础上,您可以轻松地将名为image
的varchar(100)列添加到您的APPNAME_post表中。
这可以使用适当的GUI(例如:pgAdmin III for PostgreSQL)或通过命令行界面(例如:psql)完成,命令类似于以下命令:
ALTER TABLE APPNAME_post ADD COLUMN image varchar(100);
就个人而言,我会选择Aamir建议使用South。设置它可能需要做更多的工作,但对于任何未来的架构更改都是非常宝贵的。