função Django acesso chave estrangeira em save ()

votos
2

Aqui está o meu código:

Editor de classe (models.Model):
    name = models.CharField (
            max_length = 200,
            única = True,
    )

    URL = models.URLField ()

    __unicode def __ (self):
        self.name retorno

    def salvar (self):
        passar

Item de classe (models.Model):
    publisher = models.ForeignKey (Publisher)

    name = models.CharField (
            max_length = 200,
    )

    code = models.CharField (
            max_length = 10,
    )

    __unicode def __ (self):
        self.name retorno

Eu quero ser capaz de acessar cada item do Editor função de economia. Como posso fazer isso?

Por exemplo, eu gostaria de acrescentar texto para o campo código de cada item associado com este editor sobre o save do Publisher.

Editar : Quando eu tentar implementar a primeira solução, eu recebo o erro objeto 'Publisher' tem nenhum atributo 'item_set'. Aparentemente eu não posso acessá-lo dessa forma. Quaisquer outras pistas?

Editar 2 : eu descobri que o problema que ocorre é que quando eu criar um novo objeto Publisher, eu adicionar itens em linha. Para tanto, ao tentar salvar um editor e acessar os itens, eles não existem.

Existe alguma maneira de contornar isso?!

Publicado 20/11/2008 em 23:10
fonte usuário
Em outras línguas...                            


1 respostas

votos
8

Você deve ser capaz de fazer algo como o seguinte:

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

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

Eu realmente não gosto que você está fazendo aqui, isso não é uma boa maneira de se relacionar Itemcom Publisher. O que é que você está depois no final?

Respondeu 20/11/2008 em 23:25
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more