更改upload_to的可调用性会中断迁移Django

时间:2016-11-23 10:23:28

标签: python django django-models

我的图片上传速度可调,如下所示:

@deconstructible
class Rename(object):
    def __init__(self, path):
        self.path = path

    def __call__(self, instance, filename):
        # some stuff and returns path

当我将__init__签名更改为:

def __init__(self, path, file_type):
        self.path = path
        self.file_type = file_type

我再也无法运行makemigrations了:

  File "/pathtomyapp/migrations/0001_initial.py", line 59, in Migration
    ('avatar', models.ImageField(blank=True, null=True, upload_to=myapp.models.Rename(b'profiles'))),
TypeError: __init__() takes exactly 3 arguments (2 given)

有没有办法在不修改迁移文件中的重命名功能签名的情况下解决此问题

1 个答案:

答案 0 :(得分:1)

您可以更改迁移文件并提供file_type

('avatar', models.ImageField(blank=True, null=True, upload_to=myapp.models.Rename(b'profiles', 'file-type'))),

或者在file_type方法中将__init__参数设为可选。

@deconstructible
class Rename(object):
    def __init__(self, path, file_type=None):