Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2013, 18:21
Avatar de minkweb
minkweb
 
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 19 años, 2 meses
Puntos: 14
Save Relacion ManyToMany tabla intermedia

Buen día maestros

Esto me está rompiendo la cabeza, les explico

Tengo 3 modelos en ManyToMany, User y Compound que ambos se van a relacionar en UserCompound, el problema que no se la forma correcta de hacer el save(), les paso el código de los modelos

Código Python:
Ver original
  1. class Compound(models.Model):
  2.     name = models.CharField(max_length=50)
  3.     slug = models.SlugField()
  4.     date = models.DateField(auto_now_add = True)
  5.     user_compound = models.ManyToManyField(User, through='UserCompound', blank=True)
  6.  
  7.     class Meta:
  8.         app_label = 'compound'
  9.         db_table = 'compound'

Código Python:
Ver original
  1. class UserCompound(models.Model):
  2.     compound = models.ForeignKey(Compound)
  3.     user =  models.ForeignKey(User)
  4.     role = models.ForeignKey(Role)
  5.     class Meta:
  6.         app_label = 'compound'
  7.         db_table = 'auth_user_compound'

Para el modelo User estoy usando el que viene con django auth_user

Ahora bien, me gustaria conocer la mejor forma de que al crear un nuevo Compound se inserte el registro respectivo en en la tabla UserCompound

Actualmente lo logré asi

Código Python:
Ver original
  1. compound_form = CompoundCreateForm(data)
  2.     if compound_form.is_valid():
  3.         new_compound = compound_form.save()
  4.         UserCompound.objects.create(user_id=request.user.id, compound_id=new_compound.pk)

Pero estuve leyendo cosas como save_m2m() y la funcion add(), pero no entendí como usarlas

Me gustaría saber la forma correcta en la que se hace esto


Mil gracias
__________________
Juegos
Juegos iphone