我在我的项目中建立了一个向导。在第一步中,我创建了一个对象“Building”并将其保存在数据库中。在第二步中,我让用户上传在第一步中保存的建筑物的图像。
图像在建筑物的模型中。
当我尝试自定义图像的保存路径时,我发现“instance.pk”为None。
如果我尝试访问应该在“实例”中的模型的每个属性,也会发生同样的事情。我可以访问的唯一属性是我在视图中手动设置的属性(例如 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)
...
内容文件名:
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])
视图的一部分(第二个向导步骤):
# 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()
...