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