繁体   English   中英

Django模型中的Override Field属性

[英]Override Field attribute in Django Model

我有个问题。 我正在尝试使用FileField的upload_to属性更改文件上传到的目录,但没有成功。

主要问题是我已经定义了具有文件属性的父类,并且我想更改子类的目录。

我的模型是以这种方式定义的:

class DocumentBase(models.Model):
    file = models.FileField(upload_to=get_filename)


class Document(DocumentBase):
    file_type = models.CharField(max_size=150)

我试图覆盖子类中的FileField,但没有成功(我现在知道这是不可能的。)

我还尝试了另一个问题 (与我的问题非常相似)的答案,但没有成功。

有人可以帮我吗? 谢谢!

正如Willem所说,这可以解决猴子修补upload_to属性的问题。 但这不适用于这种情况。

深入研究FileField类定义 ,该类具有另一个属性: generate_filename 可调用upload_to时填充此属性。 此属性用于生成文件名。

因此,有效的解决方案是:

class DocumentBase(models.Model):
    file = models.FileField(upload_to=get_filename)


class Document(DocumentBase):
    file_type = models.CharField(max_size=150)

Document._meta.get_field('file').generate_filename = other_get_filename

此行为在Django 1.10上发生了变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM