Foros del Web » Programando para Internet » Python »

Alguien ha usado M2M en Django

Estas en el tema de Alguien ha usado M2M en Django en el foro de Python en Foros del Web. Les cuento ya he logrado crear los modelos relacionados many to many, pero no se como poder lograr crear una vista usando los 2 modelos ...
  #1 (permalink)  
Antiguo 23/01/2013, 21:31
 
Fecha de Ingreso: enero-2013
Ubicación: Campeche
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Alguien ha usado M2M en Django

Les cuento ya he logrado crear los modelos relacionados many to many, pero no se como poder lograr crear una vista usando los 2 modelos y ni se diga del metodo guardar, espero y alguien pueda ayudarme
  #2 (permalink)  
Antiguo 23/01/2013, 21:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Alguien ha usado M2M en Django

Primero que nada bienvenido edderleonardo!
A la pregunta del titulo.

Cita:
Iniciado por edderleonardo
Alguien ha usado M2M en Django
Yo las he usado todo el tiempo.

Cita:
Iniciado por edderleonardo
Les cuento ya he logrado crear los modelos relacionados many to many, pero no se como poder lograr crear una vista usando los 2 modelos y ni se diga del metodo guardar, espero y alguien pueda ayudarme
Estaría encantado de ayudarte, si pudiera ayudarte con tan pocos datos que proporcionas.

¿Que tal si empezamos por lo básico?

1. Danos tus 2 modelos (no tienen que tener todos los campos, solo los necesarios) con la relacion ManyToMany.
2. ¿Que tratas de hacer en la vista? (Si la vista donde planeas usar la relacion ManyToMany)
3. Una explicación de lo que tratas de hacer.
4. Las platillas si es que estas usando alguna.
  #3 (permalink)  
Antiguo 13/03/2013, 14:44
 
Fecha de Ingreso: enero-2013
Ubicación: Campeche
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Alguien ha usado M2M en Django

Claro por ejemplo tengo estos modelos:

Código Python:
Ver original
  1. class Movimientos(models.Model):
  2.     fecha_registro = models.DateField(null=True, blank=True)
  3.     fecha_solicitante = models.DateField(null=True, blank=True)
  4.     fecha_aceptado = models.DateField(null=True, blank=True)
  5.     class Meta:
  6.         db_table = u'movimientos'
  7.  
  8. class Inscripciones(models.Model):
  9.     matricula = models.CharField(max_length=135, blank=True)
  10.     curp = models.CharField(max_length=135)
  11.     nombres = models.CharField(max_length=300)
  12.     primer_apellido = models.CharField(max_length=300)
  13.     segundo_apellido = models.CharField(max_length=300, blank=True)
  14.     movimientos = models.ForeignKey(Movimientos)
  15.     contacto = models.ForeignKey('Contacto')
  16.     carrera                         = models.ManyToManyField(Carreras)
  17.     carrera.help_text=''
  18.    
  19.     def __unicode__(self):
  20.         return u'%s %s %s' % (self.nombres, self.primer_apellido, self.segundo_apellido)
  21.    
  22.     class Meta:
  23.         db_table = u'inscripciones'
  24.  
  25. class Contacto(models.Model):
  26.     email = models.CharField(max_length=135)
  27.     facebook = models.CharField(max_length=135, blank=True)
  28.     twitter = models.CharField(max_length=135, blank=True)
  29.     class Meta:
  30.         db_table = u'contacto'
  31.  
  32. ya están relacionados, use inspectdb en la base de datos.
  33.  
  34. creo el forms.py conteniendo lo siguiente:
  35.  
  36. from django import forms
  37. from miapp.apps.inscripciones.models import *
  38. from django.utils.safestring import mark_safe # Clase Personalizada
  39. # Checks
  40. class CheckboxSelectMultipleP(forms.CheckboxSelectMultiple):
  41.     def render(self, *args, **kwargs):
  42.         output = super(CheckboxSelectMultipleP, self).render(*args,**kwargs)
  43.         return mark_safe(output.replace(u'<ul>', u'').replace(u'</ul>', u'').replace(u'<li>', u'<p>').replace(u'</li>', u'</p>'))
  44. #
  45.  
  46. class registroForm(forms.ModelForm):
  47.     class Meta:
  48.         model = Inscripciones
  49.        
  50.         widgets = {
  51.             'curp' : forms.TextInput(attrs={'onkeyup':'aMays(event,this)'}),
  52.             'carrera': CheckboxSelectMultipleP(),
  53.          }

creo un vista para guardalo (omiti la parte de los imports)

Código Python:
Ver original
  1. def registro_view(request):
  2.     if request.method == "POST":
  3.         form = registroForm(request.POST)
  4.         info = "Inicializando"
  5.         if form.is_valid():
  6.             form.save()
  7.             info = "Se guardo el registro"
  8.         else:
  9.             info = "Datos incorrectos"
  10.         form = registroForm()
  11.         ctx = {'registroForm': registroForm , 'informacion': info } #
  12.         return render_to_response('registro/index.html', ctx , context_instance=RequestContext(request))
  13.  
  14.     else:
  15.         form = registroForm()
  16.         ctx = {'registroForm': registroForm }
  17.         return render_to_response('registro/index.html', ctx , context_instance=RequestContext(request))
en mi index.html li muestro en un form

Código HTML:
Ver original
  1. <form action="." id= "formulario" method = "POST">
  2.         {% csrf_token %}  
  3.         {{ registroForm.as_p }}
  4.         <input type="submit" value = "Preregistrarme" class="btn btn-primary" >    
  5. </form>
el problema que tengo es que a la hora de mostrar el formulario en el index.html me salen los unas listas desplegables, intente cambiarlo con un widget 'contacto': forms.TextInput(), 'movimiento': forms.TextInput(), pero al momento de llenarlos me dice mi error "Datos icorrectos", como podria guardarlos?

De antemano muchas gracias por tú ayuda.

Última edición por razpeitia; 14/03/2013 a las 00:18

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.