2014-10-26 55 views
8

我試圖使用FileField存儲文件,但該文件的目標路徑大於100個字符。我如何增加允許的字符數量?我試過max_length = 255,但沒有工作。Django - 增加FileField長度

謝謝。

編輯:添加模型

class File(models.Model): 
    Record = models.ForeignKey(Records) 
    Title = models.CharField(max_length=255, blank=False) 
    File = models.FileField(upload_to='files/Records', blank=False) 
    Upload_date = models.DateTimeField(auto_now_add=True) 

    def __unicode__(self): 
     return self.Title 
+0

請顯示您的型號代碼 – 2014-10-26 20:09:44

回答

20

Django文檔清楚地表明,所述的FileField有一個可選的參數,以改變用於存儲文件參考(文件名)的varchar列的長度。

Taken from the Django documentation here

的FileField實例在你的數據庫具有100個字符的默認最大長度VARCHAR列創建。與其他字段一樣,您可以使用max_length參數更改最大長度。

爲了利用這個MAX_LENGTH參數,只需添加參數到模型中的字段聲明,就像這樣:

class File(models.Model): 
    Record = models.ForeignKey(Records) 
    Title = models.CharField(max_length=255, blank=False) 
    File = models.FileField(upload_to='files/Records', blank=False, max_length=500) 
    Upload_date = models.DateTimeField(auto_now_add=True) 

def __unicode__(self): 
    return self.Title 

FileField或的Django提供的MAX_LENGTH在數據庫中執行水平。在對數據庫級別必須實施的模型定義進行更改時,可能會發現必須使用syncdb或遷移才能在數據庫中實現此更改。只需更改模型定義中的max_length參數就沒有任何作用,除非您隨後遷移數據庫以反映此更改。

在這種特殊情況下,必須更新表示存儲在FileField中的文件的引用文件名的varchar列,以允許更長的文件名。請確保您已完成必要的數據庫維護,以確保您的模型的字段在數據庫中得到忠實呈現。有關遷移的更多信息,請參閱here

+0

這很奇怪。我以前用max_length證明過,但沒有工作。現在完美地工作。謝謝! – Audoen 2014-10-27 07:50:24