項目中需要將model的id拼接在圖片上,作為圖片路徑的一部分。實現思路是,動態修改ImageField中的upload_to關鍵字:
關鍵代碼如下
def ? custom_upload_path(instance, filename):
? ? ?class_name= instance.__class__.__name__.lower()
? ? ? return ?"{}/{}-{}/{}".format(class_name+"s",class_name, instance.pk, filename)
調用:
class ? Temple(models.Model):
? ? ? ? image = models.ImageField(upload_to=custom_upload_path)#TODO
? ? ? ?def __str__(self):
? ? ? ? ? returnself.name
class ? Monk(models.Model):
? ? ? ?image = models.ImageField(upload_to=custom_upload_path)#TODO
? ? ?def __str__(self):
? ? ? ? returnself.name