私の目標は、主キー (文字列) を生成し、アップロードされたファイルの名前をその文字列に一致するように変更することです。これは私の短縮モデルであり、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 ファイルの名前を変更し、生成された主キーを適切に保存するにはどうすればよいですか?