关于python:django foreign key access in save()函数

Django foreign key access in save() function

以下是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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保存功能访问每个项目。我该怎么做?

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

编辑:当我尝试实现第一个解决方案时,我得到错误"'publisher'对象没有属性'item_set'"。很明显我不能那样做。还有其他线索吗?

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

有办法解决这个问题吗?!


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

1
2
3
4
5
def save(self, **kwargs):
    super(Publisher, self).save(**kwargs)

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

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