Amechi
Amechi

Reputation: 800

Django 1.8.3: Showing many-to-many additional fields in template

I have the following problem: A project can have multiple Roles, How do I show the roles field in a template? project.role shows blank and the problem is even after using _set.all in the template, I still do not get the contents from the database to show.

Model.py

class Project(models.Model):
    """
    Information for each Project
    """

    project_name = models.CharField(max_length=255, blank=True, null=True, unique=True)

    project_description = models.TextField(null=True, blank=True)

    project_url = models.URLField(max_length=200, null=True, blank=True)

    #For Admin Purposes and filtering, to keep track of new and old  in the database by administrative users
    date_added = models.DateTimeField(auto_now_add=True, null=True, blank=True, verbose_name=_('Date added'))
    last_modified = models.DateTimeField(auto_now=True, null=True, blank=True, verbose_name=_('Last modified'))



class Role(models.Model):
    """
    Information for Role
    """

    role = models.CharField(max_length=255, blank=True, null=True)

    project_role = models.ManyToManyField(Project)

View.py

class ProjectView(ListView):

    template_name = '_projects.html'

    model = Project

    def get_context_data(self, **kwargs):
        context = super(ProjectView, self).get_context_data(**kwargs)
        context['projects'] = Project.objects.all()


        return context

Template

 {% for project_info in projects %}

        {{project_info.project_name}}
        </br>
        {{project_info.project_description}}
        </br>
        {{project_info.project_url}}
        </br>

        {% for rolling in project_info.project_role_set.all %}
            {{rolling}}
        {% endfor %}


   {% endfor %} 

Upvotes: 0

Views: 68

Answers (1)

Geo Jacob
Geo Jacob

Reputation: 6009

Try this:

{% for rolling in project_info.role_set.all %}
        {{rolling}}
    {% endfor %}

Upvotes: 2

Related Questions