プロジェクトにウィザードを作成しました。最初のステップでは、オブジェクト「Building」を作成してデータベースに保存します。2番目のステップでは、最初のステップで保存した建物の画像をユーザーにアップロードさせます。
画像は建物のモデルにあります。
画像の保存パスをカスタマイズしようとすると、「instance.pk」が「なし」であることがわかりました。
「インスタンス」にあるはずのモデルのすべての属性にアクセスしようとすると、同じことが起こります。アクセスできる属性は、ビューで手動で設定した属性のみです(例:nome、descrizione、...)
なぜこれが起こっているのか、私は理解していません。誰かが私にそれを説明できますか?
モデルの一部:
class Building(models.Model):
utente = models.ForeignKey(User);
nome = models.CharField(max_length=200, unique=True)
descrizione = models.TextField(max_length=1000, blank=True)
link = models.URLField(blank=True)
foto = ImageField(upload_to=content_file_name, blank=True)
...
Content_file_name:
def content_file_name(instance, filename):
estensione = '.jpg'
posizione_punto = filename.rfind('.')
if posizione_punto > 0:
estensione = filename[posizione_punto:]
return '/'.join(['buildings', str(instance.pk), 'vetrina'+estensione])
ビューの一部(ウィザードの2番目のステップ):
# I load the building from the db
building = get_object_or_404(Building, pk=b_id)
if request.method == 'POST':
form = StepOneForm(request.POST, request.FILES)
if form.is_valid():
data = form.save(commit=False)
building.data_update = datetime.datetime.now()
building.nome = data.nome
building.descrizione = data.descrizione
building.link = data.link
building.foto = data.foto
building.save()
...