我的模型包含以下save
方法
def save(self, *args, **kwargs):
self.url = slugify(self.name)
# Saving creative if object is saved first time
if self.reloadImages is True:
print "Reload IMages"
for img in self.creative_url.split("\n"):
content = urllib2.urlopen(img).read()
extra_image = ExtraImage()
extra_image.img.save("%s.jpg" %(self.name), ContentFile(content), save=False)
extra_image.save()
self.extra_imgs.add(extra_image)
#print self.extra_imgs.all()
#self.reloadImages = False
super(Item, self).save(*args, **kwargs)
我希望它能创建一个ExtraImage
个对象(由ImageField
组成)。并将其添加到当前模型的ManyToMany extra_img
字段....
奇怪的是,在页面刷新后我没有看到extra_imgs
字段中的任何内容,方法正常工作。 (并且实际创建了ExtraImage
个项目)
答案 0 :(得分:2)
问题是您添加图像
self.extra_imgs.add(extra_image)
在数据库中创建self
之前
super(Item, self).save(*args, **kwargs)
答案 1 :(得分:0)
要添加到San4ez的答案,这个问题(你必须在保存其依赖项之前保存对象,并且依赖关系并不总是按照你期望的方式)让我在第一次开始学习时感到沮丧Django的。
如果您有大型对象图(甚至是小型对象:)并且您不想手动处理此问题,请查看具有GraphSaver类的Django ORM Tools,它将自动检测依赖关系并保存图形按照正确的顺序。