2013-05-05 70 views
2

我正在使用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.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模型的一部分。

有沒有簡單的方法來做到這一點?模型和模板將如何看起來像?任何幫助將不勝感激,謝謝。

回答

3

假設您在完成./manage.py syncdb後添加了image。然後再次刪除數據庫和syncdb(不是首選)。或者添加Django South進行數據遷移(首選)。

如何與南方合作?當你在項目中加入南方時。首先刪除image字段,以使您的模型看起來與之前完全相同。然後執行以下步驟:

  • 蟒蛇manage.py convert_to_south myapp.blog
  • 蟒蛇manage.py遷移myapp.blog 0001 --fake

現在添加image現場發回的Post模型和執行以下步驟:

  • 蟒manage.py schemamigration myapp.blog --auto
  • 蟒蛇manage.py遷移myapp.blog
+0

在另一個實例中,是否有方法檢查圖像是否已經上傳到ImageField中,作爲模板標籤?像{%if ImageField | True%}或其他東西? – 2013-05-07 20:33:11

+0

「另一個實例」是什麼意思?你可以使用if來檢查'obj'是否有與之相關的圖像,例如'如果obj.image:#做某事' – 2013-05-07 20:40:34

1

的依據是ImageField instance default to varchar(100) columns,您可以用簡單的增加一個varchar脫身(100),列名爲image您APPNAME_post表。

這可以利用適當的GUI來完成(例如:pgAdmin的III PostgreSQL的)或通過命令行接口(例如:psql的)的命令類似於以下:

ALTER TABLE APPNAME_post ADD COLUMN image varchar(100); 

個人而言,我阿米爾提出的使用南方的建議。設置它可能會有更多的工作,但對於未來的架構更改將是非常寶貴的。

相關問題