Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/12/2011, 04:11
maroxa86
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 15 años, 6 meses
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