我有一个模型,我的目标是生成主键(字符串),然后重命名上传的文件以匹配该字符串。这是我的缩短模型和upload_to
我使用的功能。
class Thing(models.Model):
id = models.CharField(primary_key=True, max_length=16)
photo = ImageField('Photo', upload_to=upload_path, null=False, blank=False)
...
def upload_path(instance, filename):
if not instance.id:
randid = random_id(16) # This returns a 16 character string of ASCII characters
while Thing.objects.filter(id=randid).exists():
logger.error("[Thing] ThingID of %s already exists" % randid)
randid = random_id(16)
instance.id = randid
return "%s%s" % ("fullpath/",randid)
这会导致图像被正确地重命名为适当路径中的随机字符串。但是,主键设置为空字符串。
如何使用生成的主键重命名 ImageField 文件并正确保存生成的主键?