0

我有一个采用以下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)。extra_img并将其添加到当前模型的 ManyToMany字段中......

奇怪的是,该方法似乎正确地完成了它的工作,页面刷新后我在extra_imgs字段中看不到任何东西。(并且ExtraImage项目实际上是创建的)

4

2 回答 2

2

问题是您添加图像

self.extra_imgs.add(extra_image)

beforeself在您的数据库中创建

super(Item, self).save(*args, **kwargs)
于 2012-05-10T14:36:07.347 回答
0

为了补充 San4ez 的答案,当我第一次开始学习 Django 时,这个问题(事实上,您必须在保存对象之前保存它的依赖项,并且依赖项并不总是按照您期望的方式进行)让我感到沮丧。

如果您有大型对象图(甚至是小型对象图 :))并且您不想手动处理此问题,请查看具有 GraphSaver 类的Django ORM 工具,该类将自动检测依赖关系并以正确的顺序保存图。

于 2012-05-10T15:23:40.240 回答