Django foreign key access in save() function

Here's my code:

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

I want to be able to access each Item from the Publisher save function. How can I do this?

For instance, I'd like to append text to the "code" field of each Item associated with this Publisher on the save of Publisher.

edit: When I try to implement the first solution, I get the error "'Publisher' object has no attribute 'item_set'". Apparently I can't access it that way. Any other clues?

edit 2: I discovered that the problem occurring is that when I create a new Publisher object, I add Items inline. Therefor, when trying to save a Publisher and access the Items, they don't exist.

Is there any way around this?!


You should be able to do something like the following:

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

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

I don't really like what you're doing here, this isn't a good way to relate Item to Publisher . What is it you're after in the end?

链接地址: http://www.djcxy.com/p/54006.html

上一篇: 如何将用户模型传递到表单域(django)?

下一篇: Django在save()函数中的外键访问