モデルの 1 つに問題があります。画像をアップロードしていて、id (データベーステーブルに pk) を保存したいのですが、どの時点で Django が にアクセスできるかを知る必要があります self.id
。
models.py
class BicycleAdItemKind(MPTTModel):
def url(self, filename):
pdb.set_trace()
url = "MultimediaData/HelpAdImages/ItemKind/%s/%s" % (self.id, filename)
return url
def item_kind_image(self):
return '<img align="middle" src="/media/%s" height="60px" />' % self.image
item_kind_image.allow_tags = True
# Bicicleta completa, Componentes para bicicleta, Acessorios para ciclista
n_item_kind = models.CharField(max_length=50)
parent = TreeForeignKey('self', null=True,
blank=True, related_name='children')
description = models.TextField(null=True, blank=True)
image = models.ImageField(upload_to=url, null=True, blank=True)
date_inserted = models.DateTimeField(auto_now_add=True)
date_last_update = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.n_item_kind
class MPTTMeta:
order_insertion_by = ['n_item_kind']
問題はurl()
メソッドにあります。self.id
オブジェクトを更新するときだけ取得できself.id
、新しいオブジェクトを作成するときは取得できません。self.id
新しいオブジェクトを作成するときに取得できるように、このモデルを変更するにはどうすればよいですか?
現在のコードでは、新しいオブジェクトを作成すると、次のような URL になります。
MultimediaData/HelpAdImages/ItemKind/None/somefile.jpg
そして、次のようなものが必要です:
MultimediaData/HelpAdImages/ItemKind/35/somefile.jpg
手がかりはありますか?