Add intro-user-level documentation about calling model methods from views.
Patch from timo and shacker. Fixed #10903. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13808 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
93cda768ee
commit
7c075440ea
|
@ -823,6 +823,8 @@ a join with an ``F()`` object, a ``FieldError`` will be raised::
|
|||
# THIS WILL RAISE A FieldError
|
||||
>>> Entry.objects.update(headline=F('blog__name'))
|
||||
|
||||
.. _topics-db-queries-related:
|
||||
|
||||
Related objects
|
||||
===============
|
||||
|
||||
|
|
|
@ -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
|
||||
{{ task.foo }}
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue