Skip to content Skip to sidebar Skip to footer

Querying Many To Many Fields In Django Template

This may not be relevant but just wanted to ask, IF an object is passed from views to template and in the template will i be able to query many to many fields Models code: class

Solution 1:

In general, you can follow anything that's an attribute or a method call with no arguments through pathing in the django template system.

For the view code above, something like

{% for objs in obj_arr %}
{% for answer in objs.answers.all %}
  {{ answer.someattribute }}
{% endfor %}
{% endfor %}

should do what you're expecting.

(I couldn't quite make out the specifics from your code sample, but hopefully this will illuminate what you can get into through the templates)

Solution 2:

It's also possible to register a filter like this:

models.py

classProfile(models.Model):
    options=models.ManyToManyField('Option', editable=False)

extra_tags.py

@register.filterdefdoes_profile_have_option(profile, option_id):
    """Returns non zero value if a profile has the option.
    Usage::

        {% if user.profile|does_profile_have_option:option.id %}
        ...
        {% endif %}
    """return profile.options.filter(id=option_id).count()

More info on filters can be found here https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

Post a Comment for "Querying Many To Many Fields In Django Template"