Ich habe gerade meine App auf 1,7 hochgestuft (eigentlich immer noch versucht).Django - Ich kann keine Migrationen für ImageField mit dynamischem Wert für upload_to erstellen
Das ist, was ich in models.py hatte:
def path_and_rename(path):
def wrapper(instance, filename):
ext = filename.split('.')[-1]
# set filename as random string
filename = '{}.{}'.format(uuid4().hex, ext)
# return the whole path to the file
return os.path.join(path, filename)
return wrapper
class UserProfile(AbstractUser):
#...
avatar = models.ImageField(upload_to=path_and_rename("avatars/"),
null=True, blank=True,
default="avatars/none/default.png",
height_field="image_height",
width_field="image_width")
Wenn ich zu makemigrations
versuchen, es wirft:
ValueError: Could not find function wrapper in webapp.models.
Please note that due to Python 2 limitations, you cannot serialize unbound method functions (e.g. a method declared
and used in the same class body). Please move the function into the main module body to use migrations.
Ich denke, das ist die richtige Lösung. –
Ist es möglich, dies zu verwenden und einen benutzerdefinierten Dateipfad für jedes Feld hinzuzufügen? –
@ Garreth00 Ja, übergeben Sie den Dateipfad als Parameter an die 'PathAndRename' Klasse. wie: 'custom_path = PathAndRename ("/profiles/bg-images ")' – alix