Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2012, 10:52
maroxa86
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 15 años, 5 meses
Puntos: 0
No se me muestra la información de un campo ManyToMany

Buenas tardes a todos.

Estoy realizando el proyecto final de carrera en Python y Django y me ha surgido un problema para mostrar la información que contiene el campo ManyToMany.

El problema es el siguiente, quiero mostrar el nombre de una carpeta que ha compartido un usuario con otro, Django me muestra todas las carpetas compartidas que tiene un usuario con otro pero no me muestra el nombre de la carpeta.

Aquí os dejo el código para que comprobéis haber que es lo que hago mal, porque he mirado en la doc de Django y no he podido encontrar la solución.

models.py

Código Python:
Ver original
  1. class Carpetas(models.Model):
  2.     idCarpeta = models.AutoField(primary_key=True)
  3.     Nombre = models.CharField(max_length=45)
  4.     Usuario= models.ForeignKey(User)
  5.     Padre = models.IntegerField(null=True)
  6.  
  7.     def __unicode__(self):
  8.         return self.Nombre
  9.  
  10. class Comparten(models.Model):
  11.     idUsuari1 = models.IntegerField()
  12.     idUsuari2 = models.ManyToManyField(User,related_name='receptor')
  13.     idCarpeta = models.ManyToManyField(Carpetes,related_name='carpeta')
  14.     lectura = models.BooleanField()
  15.     escriptura = models.BooleanField()

views.py

Código Python:
Ver original
  1. def usuari(request):
  2.     compartit=None
  3.     usuario = User.objects.get(username=request.user.username)
  4.     carpeta_usu= Carpetes.objects.get(Usuari=usuario.id, Nombre = usuario.username)
  5.     carpetas = Carpetas.objects.filter(Usuari=usuari.id, Padre = carpeta_usu.idCarpeta)
  6.         #Obtenemos las carpetas compartidas
  7.     compartidas = Comparten.objects.filter(idUsuari2 = usuari.id)
  8.     archivos = Archivos.objects.filter(Carpeta = carpeta_usu.idCarpeta)
  9.     return render_to_response('usuario.html', {'carpetas' : carpetas, 'id_carpeta': carpeta_usu.idCarpeta, 'archivos' : archivos, 'compartidas' : compartidas}, context_instance=RequestContext(request))

usuario.html

Os muestro la parte donde se tiene que mostrar el nombre de la carpeta

Código Python:
Ver original
  1. {% for compartida in compartidas %}
  2.     <tr>
  3.         <td>
  4.             <img src="{{ STATIC_URL }}img/folder_page.png"><a href='/carpeta/{{compartida.idCarpeta}}'>{{ compartida.idCarpeta.carpetas.nombre }}</a>
  5.         </td>
  6.         <td align="center">
  7.             {% if compartida.lectura %}
  8.             <img src="{{ STATIC_URL }}img/book_open.png">
  9.                 {% endif %}
  10.             {% if compartida.escriptura %}
  11.             <img src="{{ STATIC_URL }}img/edit.png">
  12.             {% endif%}
  13.         </td>
  14.     </tr>
  15. {% endfor %}