Foros del Web » Programando para Internet » Python »

Problema para acceder a la información en un campo ManyToMany en django

Estas en el tema de Problema para acceder a la información en un campo ManyToMany en django en el foro de Python en Foros del Web. Hola buenos dias Soy novato en esto del Django y para practicar tengo una base de datos de libros autores y editoriales para practicar, como ...
  #1 (permalink)  
Antiguo 07/12/2011, 04:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 15 años
Puntos: 0
Problema para acceder a la información en un campo ManyToMany en django

Hola buenos dias

Soy novato en esto del Django y para practicar tengo una base de datos de libros autores y editoriales para practicar, como la del ejemplo del djangobook

El problema que tengo es que al mostrar la información del libro el autor del libro no se me muestra porque no puedo acceder a la información, ya que la relacion entre el libro y el autor es manyTomany.

Aqui os dejo el modelo, la vista y la plantilla para que podeis indicarme donde esta el fallo, ja que he buscado por internet y en otros foros y no he podido encontrar una solución

model.py

Código Python:
Ver original
  1. from django.db import models
  2.  
  3. # Create your models here.
  4.  
  5. class Publisher(models.Model):
  6.     name = models.CharField(max_length=30)
  7.     address = models.CharField(max_length=50)
  8.     city = models.CharField(max_length=60)
  9.     state_province = models.CharField(max_length=30)
  10.     country = models.CharField(max_length = 50)
  11.     website = models.URLField(blank=True)
  12.  
  13.     def __unicode__(self):
  14.         return self.name
  15.  
  16. class Author(models.Model):
  17.     first_name = models.CharField(max_length=30)
  18.     last_name = models.CharField(max_length=40)
  19.     email = models.EmailField(blank=True)
  20.  
  21.     def __unicode__(self):
  22.         return self.first_name
  23.  
  24. class Book(models.Model):
  25.     title = models.CharField(max_length=100)
  26.     author = models.ManyToManyField(Author)
  27.     publisher = models.ForeignKey(Publisher)
  28.     publication_date = models.DateField(blank=True, null=True)
  29.  
  30.     def __unicode__(self):
  31.         return self.title
views.py

Código Python:
Ver original
  1. from django.shortcuts import render_to_response
  2. from web.books.models import *
  3.  
  4. # Create your views here.
  5.  
  6. def index(request):
  7.     return render_to_response('index.html')
  8.  
  9. def llibres(request):
  10.     return render_to_response('llibres.html')
  11.  
  12. def autors(request):
  13.     return render_to_response('autors.html')
  14.  
  15. def editorials(request):
  16.     return render_to_response('editorials.html')
  17.  
  18. def tots_llibres(request):
  19.     books = Book.objects.all()
  20.     return render_to_response('tots_llibres.html',{'books' : books})

tots_llibres.html

Código Python:
Ver original
  1. {% extends "base.html" %}
  2.  
  3.     {% block content %}
  4.     <p>
  5.         La base de dades conte {{ books|length }} llibre{{ books|pluralize }}.
  6.     </p>
  7.     <table>
  8.         <tr>
  9.             <td>   
  10.                 Titol
  11.             </td>
  12.             <td>
  13.                 Autor
  14.             </td>
  15.             <td>
  16.                 Editorial
  17.             </td>
  18.             <td>
  19.                 Data de Publicacio
  20.             </td>
  21.         </tr>
  22.         {% if books %}
  23.             {% for book in books %}
  24.                 <tr>
  25.                     <td>
  26.                         {{ book.title }}
  27.                     </td>
  28.                     <td>
  29.                         {{ book.author.first_name }}
  30.                     </td>
  31.                     <td>
  32.                         {{ book.publisher.name }}
  33.                     </td>
  34.                     <td>
  35.                         {{ book.publication_date }}
  36.                 </tr>
  37.             {% endfor %}
  38.         {% endif %}
  39.     </table>
  40.     <p>
  41.         <a href="/llibres/">Tornar Enrere</a>
  42.     </p>
  43.     {% endblock %}

Gracias de antemano por la ayuda que podais aportar

Última edición por maroxa86; 07/12/2011 a las 05:18
  #2 (permalink)  
Antiguo 07/12/2011, 08:53
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema para acceder a la información en un campo ManyToMany en django

Dentro del for de libros puedes recorrer los autores que tenga el libro.

Código Python:
Ver original
  1. {% for author in book.author.all%}
  2.     <td>
  3.         {{ author.first_name }}
  4.     </td>
  5. {% endfor %}
  #3 (permalink)  
Antiguo 07/12/2011, 10:02
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema para acceder a la información en un campo ManyToMany en django

Muchas gracias la solución me ha funcionado perfectamente.

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 13:38.