2012-12-01 78 views
0

我正在設計一個使用Django的網站。網站的想法是讓攝影師和每位攝影師擁有一張專輯或多張專輯,每張專輯都會有一張或多張照片。目前,我有:django數據庫

class Photo(models.Model): 
    name=models.ForeignKey('Album') 
    p=models.ImageField() 
    def __unicode__(self): 
     return self.name 
class Album(models.Model): 
    name=models.ForeignKey('Photographer') 
    def __unicode__(self): 
     return self.name 
class Photographer(models.Model): 
    name=models.ForeignKey('User') 
    def __unicode__(self): 
     return self.name 

的問題是,如果你有相同的設計,你會爲每個攝影師創建一個目錄併爲每張專輯你會在父目錄中創建另一個目錄,然後將照片存儲在該專輯中的目錄或者將它們存儲在數據庫中。我知道這是一個新手問題,但我真的需要幫助。如果你有其他設計讓我更容易,請讓我知道。

由於提前, 阿卜杜勒

+0

呃......我會讓存儲處理程序爲我處理... –

+0

你是什麼意思? – abdul

回答

2

使用imagefield將所有照片存儲在一個地方,甚至更好地將它們存儲在雲存儲服務中。並且關於與Album和Photographer有關的照片模型中的ForeignKeys關係。比使用反向關係找出每張專輯或攝影師的照片。

您的代碼可能看起來像this`

class Photo(models.Model): 
image = ImageField(upload_to="whereever you want to") 
album = ForeignKey(Album) 
photographer=ForeignKey(Photographer) 

,你會得到一個特別的專輯,你可以使用後 Album.set_all和photographer.set_all得到一個特定的專輯或攝影師

的所有照片

`

1

是,直接將照片存儲在文件系統中,而不是數據庫。這是一種常見的做法,其原因很多,主要與績效有關。

如果你期望有照片的thousends然後不保留他們一個目錄,因爲這可能會導致流行系統的性能問題。相反,請設計適合您應用程序的簡單層次結構。

+0

但是,知道任何處理該框架的框架嗎? – abdul

+0

Django的'ImageField'處理開箱即用....看看我的答案。 – miki725

+0

以後處理非拉丁文和混合? – abdul

1

沒有必要爲攝影師或專輯創建目錄。這就是數據庫的用途。你可以有一個巨大的文件夾(在upload_to中指定),它將包含所有攝影師和專輯的所有上傳圖像,然後提供一個數據庫來跟蹤哪些照片屬於攝影師/專輯。

順便說一句,你應該指定ImageFieldupload_to參數:

models.ImageField(upload_to='images/') 

如果你真的想爲每個專輯文件夾,您可以通過一個功能upload_to參數,並添加你想要有什麼邏輯.. 。更多關於文檔here