Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Browse files

Add intro-user-level documentation about calling model methods from v…


Patch from timo and shacker. Fixed #10903.

git-svn-id: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 7c075440ea3fb082b9b081a3c1b20b2b62e0e4dc 1 parent 93cda76
@malcolmt malcolmt authored
Showing with 41 additions and 0 deletions.
  1. +2 −0  docs/topics/db/queries.txt
  2. +39 −0 docs/topics/templates.txt
2  docs/topics/db/queries.txt
@@ -823,6 +823,8 @@ a join with an ``F()`` object, a ``FieldError`` will be raised::
>>> Entry.objects.update(headline=F('blog__name'))
+.. _topics-db-queries-related:
Related objects
39 docs/topics/templates.txt
@@ -569,6 +569,45 @@ This doesn't affect what happens to data coming from the variable itself.
The variable's contents are still automatically escaped, if necessary, because
they're beyond the control of the template author.
+.. _template-accessing-methods:
+Accessing method calls
+Most method calls attached to objects are also available from within templates.
+This means that templates have access to much more than just class attributes
+(like field names) and variables passed in from views. For example, the Django
+ORM provides the :ref:`"entry_set"<topics-db-queries-related>` syntax for
+finding a collection of objects related on a foreign key. Therefore, given
+a model called "comment" with a foreign key relationship to a model called
+"task" you can loop through all comments attached to a given task like this::
+ {% for comment in task.comment_set.all %}
+ {{ comment }}
+ {% endfor %}
+Similarly, :doc:`QuerySets<ref/models/querysets>` provide a ``count()`` method
+to count the number of objects they contain. Therefore, you can obtain a count
+of all comments related to the current task with::
+ {{ task.comment_set.all.count }}
+And of course you can easily access methods you've explicitly defined on your
+own models::
+ # In model
+ class Task(models.Model):
+ def foo(self):
+ return "bar"
+ # In template
+ {{ }}
+Because Django intentionally limits the amount of logic processing available
+in the template language, it is not possible to pass arguments to method calls
+accessed from within templates. Data should be calculated in views, then passed
+to templates for display.
.. _template-built-in-reference:
Using the built-in reference

0 comments on commit 7c07544

Please sign in to comment.
Something went wrong with that request. Please try again.