Django 使用对象的名称将_上载到
我有一个问题,我想你们很容易在Django上传到,但对我来说很难。希望你的帮助Django 使用对象的名称将_上载到,django,django-models,Django,Django Models,我有一个问题,我想你们很容易在Django上传到,但对我来说很难。希望你的帮助 # Upload_to Def from datetime import datetime def avatar_country_path(instance, filename): ext = filename.split('.')[-1] filename = '%s' % (instance.id) datetime_str = datetime.now().strftime("%Y%m%
# Upload_to Def
from datetime import datetime
def avatar_country_path(instance, filename):
ext = filename.split('.')[-1]
filename = '%s' % (instance.id)
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
return "geo/country/%s/%s_avatar.%s" %(filename, datetime_str, ext)
def cover_country_path(instance, filename):
ext = filename.split('.')[-1]
filename = '%s' % (instance.id)
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
return "geo/country/%s/%s_cover.%s" %(filename, datetime_str, ext)
def flag_country_path(instance, filename):
ext = filename.split('.')[-1]
filename = '%s' % (instance.id)
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
return "geo/country/%s/%s_flag.%s" %(filename, datetime_str, ext)
class BaseCountry(Place, SlugModel):
# More
avatar = models.ImageField(max_length=1024, upload_to=avatar_country_path, blank=True)
cover = models.ImageField(max_length=1024, upload_to=cover_country_path, blank=True)
flag = models.ImageField(max_length=1024, upload_to=flag_country_path, blank=True
如您所见,我需要3个函数来使用类似的路径将upload_上传到,只是在字段名称(化身、封面、旗帜)上有所不同,但我不知道如何缩短它
你们能帮帮我吗?解决如何缩短这样的代码的一个技巧是寻找重复的行,然后尝试对其余行进行参数化,如下所示:
从日期时间导入日期时间
def inject_字段_类型(实例、文件名、后缀):
ext=filename.split('.')[-1]
文件名=“%s%”(实例.id)
datetime\u str=datetime.now().strftime(“%Y%m%d%H%m%S”)
返回“geo/country/%s/%s\%s.%s”%(文件名、日期时间、分机、后缀)
def avatar_国家路径(实例,文件名):
返回注入字段类型(实例、文件名、“化身”)
def cover_country_路径(实例,文件名):
返回注入字段类型(实例、文件名、“封面”)
def标志\国家\路径(实例,文件名):
返回注入字段类型(实例、文件名、“标志”)
类别基准国家(地点、型号):
avatar=models.ImageField(最大长度=1024,上传到=avatar\u国家路径,空白=True)
cover=models.ImageField(最大长度=1024,上传到=cover\u country\u路径,空白=True)
flag=models.ImageField(最大长度=1024,上传到=flag\u country\u路径,空白=True
通过这种方式,您可以更改创建路径所需的逻辑,从而影响所有3个字段,而不必在3个不同的函数中更改它。无论如何,要对3个字段使用一个Def,兄弟?没有“Def”这样的东西。这些是函数或方法。