函数中的Django外键访问

2024-06-07 16:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

class Publisher(models.Model):
    name = models.CharField(
            max_length = 200,
            unique = True,
    )

    url = models.URLField()

    def __unicode__(self):
        return self.name

    def save(self):
        pass

class Item(models.Model):
    publisher = models.ForeignKey(Publisher)

    name = models.CharField(
            max_length = 200,
    )

    code = models.CharField(
            max_length = 10,
    )

    def __unicode__(self):
        return self.name

我希望能够从Publisher save函数访问每个项目。我该怎么做?

例如,我想在保存Publisher时将文本附加到与此Publisher关联的每个项的code字段。

编辑: 当我尝试实现第一个解决方案时,出现错误“'Publisher'对象没有属性'item_set'”。显然我不能用那种方式进入。还有其他线索吗?

编辑2: 我发现出现的问题是,当我创建一个新的发布者对象时,我会以内联方式添加项。因此,当试图保存发布者并访问项目时,它们不存在。

有办法吗?!


Tags: 项目nameselfmodelreturnmodelssavedef
1条回答
网友
1楼 · 发布于 2024-06-07 16:32:24

您应该能够执行以下操作:

def save(self, **kwargs):
    super(Publisher, self).save(**kwargs)

    for item in self.item_set.all():
        item.code = "%s - whatever" % item.code

我真的不喜欢你在这里做的事情,这不是一个把ItemPublisher联系起来的好方法。你到底在追求什么?

相关问题 更多 >

    热门问题