我知道您可以使用 upload_to 参数传递可调用函数来动态更改 Django 模型中的 FileFied/ImageField 等。
upload_to 调用的函数传递了 2 个变量,即未保存在数据库中的文件的实例 (instance) 和所述实例的文件名 (filename)。
如果我在模型中使用 ImageField 以及其他(Char 等)字段,是否可以将这些字段中的值获取到同一个可调用函数中。
例如。
class Badge(models.Model):
def format_badge_name(instance, filename):
_filetype = os.path.splitext(filename)[1]
_category = 'foo'
_name = os.path.splitext(filename)[0]
_filename = "%s-%s-%s%s" % (_category, _name, 'private', _filetype)
return "badges/%s" % _filename
name = models.CharField(max_length=16, help_text="Name for Badge")
file = models.ImageField(upload_to=format_badge_name)
是否可以将名称(self.name?)中的值传递到format_badge_name?
The instance
变量是Badge()
实例。您可以像往常一样访问它的属性
def format_badge_name(instance, filename):
instance.name
instance.file
...
你可以命名instance
'self'
,这样可能更容易理解:
def format_badge_name(self, filename):
self.name
self.file
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)