画像の URL を /img/1 と /img/2 にしたいのですが、すべてのモデルに割り当てられた自動インクリメント ID を使用するのが最適で、すべての URL が異なるようになると考えました。問題は、モデルのインスタンスが保存される前に ID を持っていないことです。これは、models.py の以下のコードの問題です。
def update_filename(instance, filename):
a = type(instance.id)
if a is not int:
a = 1
else:
a = instance.id
path = "img" + "/" + str(a) + ".jpg"
return path
class User_Image(models.Model):
image = models.ImageField(upload_to=update_filename)
これを修正する方法について何か提案はありますか? django が画像を保存するときのすべてのインスタンスの ID は None であるため、すべての画像は img ディレクトリに "None" または "None_1" などとして保存されます。