Prudent Devs

Handling ManyToMany field in Django

Sample code to handle M2M in Django

I'm still learning Django; but as I learn more and more I admire the thoughtfulness of those who designed the framework. They’ve surely made complex things easy and simple things easier.

I continue to learn Django by creating applications that I will use - either at office or at home. First I created SOL (a microblog) to be used at office; Now I’m developing a book inventory application for my own use.

In this application, I have a M2M model - book and authors. class Author(models.Model): name = models.CharField(max_length=45)

class Book(models.Model): … authors = models.ManyToManyField(Author, verbose_name=“Authors”) …

Django’s Many-to-Many relation documentation is pretty detailed. I couldn’t find much details on using M2M in a template. However, it was explained in Google Group.

{% for item in query_list %}

{{item.title}} {% for author in item.authors.all %}
   {%endfor %}</td></tr>

{% endfor %}

If you are implementing AJAX, you may want to compile the rows into a list. That can be achieved by:

rows = [{‘id’:, ‘cell’: [book.title, ’ & '.join([ for auth in book.authors.all()]), book.publisher, book.isbn]} for book in books]

Don’t know if that’s all to M2M. But this all I’ve learned.

Published On:
Under: #code , #python , #django
Sign up for my newsletter