jdu*_*can 4 django django-models
我知道你可以使用upload_to参数传递一个可调用函数来动态改变Django模型中的FileFied/ImageField等.
upload_to调用的函数传递2个变量,即未保存在数据库中的文件(实例)的实例和所述实例的文件名(文件名).
如果我在模型中使用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)
Run Code Online (Sandbox Code Playgroud)
是否可以将name(self.name?)中的值传递给format_badge_name?
okm*_*okm 10
该instance变量是Badge()实例.您可以像往常一样访问它的属性
def format_badge_name(instance, filename):
instance.name
instance.file
...
Run Code Online (Sandbox Code Playgroud)
你可以命名instance 'self',它可能更容易被理解:
def format_badge_name(self, filename):
self.name
self.file
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |