【发布时间】:2015-11-04 09:19:58
【问题描述】:
我们使用可调用对象在项目中动态生成 upload_to 目标,如下所示。
class PKUploader(object):
def __init__(self, prefix, extension=None):
self.prefix = prefix
self.extension = extension
def __call__(self, instance, filename):
ext = self.extension or os.path.splitext(filename)[1]
if not ext.startswith('.'):
ext = '.' + ext
if instance.pk is None:
pk = random.randint(1000, 99999)
else:
pk = instance.pk
pk = str(pk) + str(uuid.uuid4())
return '{}/{}{}'.format(self.prefix, pk, ext)
在我们的模型中,它的使用方式类似于
class CoolKids(models.Model):
image = models.ImageField(upload_to=PKUploader('users_image'))
但是,当我们运行从 django 1.6 升级到 1.7 并运行 makemigrations 时,我们会收到以下错误。
ValueError: Cannot serialize: <PKUploader object at 0x7ff5f1cf0b90>
There are some values Django cannot serialize into migration files.
For more, see https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing
任何人都可以对此有所了解吗?
【问题讨论】: