django:如何从视图中保存多个到多个字段

时间:2012-05-10 14:25:59

标签: python django

我的模型包含以下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个项目)

2 个答案:

答案 0 :(得分:2)

问题是您添加图像

self.extra_imgs.add(extra_image)

在数据库中创建self之前

super(Item, self).save(*args, **kwargs)

答案 1 :(得分:0)

要添加到San4ez的答案,这个问题(你必须在保存其依赖项之前保存对象,并且依赖关系并不总是按照你期望的方式)让我在第一次开始学习时感到沮丧Django的。

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