Problema em relacionamentos múltiplos

38 views
Skip to first unread message

Artur

unread,
May 29, 2012, 11:03:53 AM5/29/12
to django...@googlegroups.com
Galera, eu tenho um model que é a respeito de rotas de viagens, uma viagem pode ter diversas rotas de ida e vinda, então fiz assim.

rota_destino = models.ManyToManyField(Rota)
rota_retorno = models.ManyToManyField(Rota)

só que o model não valida e acusa erro, como contornar essa situação?

Error: One or more models did not validate:
cadastros.viagem: Accessor for m2m field 'rota_destino' clashes with related m2m field 'Rota.viagem_set'. Add a related_name argument to the definition for 'rota_destino'.
cadastros.viagem: Accessor for m2m field 'rota_retorno' clashes with related m2m field 'Rota.viagem_set'. Add a related_name argument to the definition for 'rota_retorno'.

Ernesto Guevara

unread,
May 29, 2012, 11:47:11 AM5/29/12
to django...@googlegroups.com
Olá Artur!

Veja se a modelagem poderia ser assim:

class Rota(models.Model):
    # atributos de rota


class Viagem(models.Model):
    rota = models.ManyToManyField(Rota, through='ViagemRota', blank=True, null=True)  

class ViagemRota(models.Model):

     CHOICES = (
        ('Partida', 'Partida'),
        ('Retorno', 'Retorno'),
     )

    tipo = models.ChoiceField(max_length=255,choices=CHOICES)
    data = models.DateField()
    # pode adicionar mais atributos se precisar

Um m2m que utiliza a classe ViagemRota para fazer o relacionamento entre viagem e rota mas guardando dados adicionais referentes a esse relacionamento, se é patida ou destino e a sua data.


Abraço!


2012/5/29 Artur <phi...@gmail.com>

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Artur

unread,
May 29, 2012, 11:53:08 AM5/29/12
to django...@googlegroups.com
Entendi, valeu, creio que assim não terá problemas, inclusive me permite adicionar dados extras caso necessário(como a data e horário de saída de cada rota) valeu, creio que isso resolve a questão!

Flavia Missi

unread,
May 29, 2012, 12:10:15 PM5/29/12
to django...@googlegroups.com
Isso resolve, mas o problema real está no nome do relacionamento, como são 2 relacionamentos com o mesmo model e o django cria o related_name automaticamente ele está conflitando. Simplesmente passar o related_name em um dos campos já funcionaria.

[]'s

2012/5/29 Artur <phi...@gmail.com>



--
Flavia

Artur

unread,
May 29, 2012, 1:10:11 PM5/29/12
to django...@googlegroups.com
Valeu pela informação Flávia, isso realmente funcionou e resolveu o problema, irei verificar qual seria o melhor modo nesse caso.
Reply all
Reply to author
Forward
0 new messages