Django - выбрать объект из БД в шаблоне - PullRequest
0 голосов
/ 28 августа 2011

У меня есть что-то вроде:

{% for mother in mothers_list %}
    {% for father in fathers_list %}
        {% Child.objects.get(mother=mother, father=father) as child %}
            child.name

К сожалению, я не могу вызвать функцию с параметрами из шаблона, поэтому эта строка

{% Child.objects.get(mother=mother, father=father) as child %}

не будет работать. Любые идеи о том, как я могу получить объект Child каждый раз?

Ответы [ 3 ]

2 голосов
/ 29 августа 2011

вы можете написать пользовательские теги шаблонов для этого, и это будет выглядеть так:

В вашем project/templatetags/custom_tags.py:

    from django.template import Library
    register = Library()
    @register.filter
    def mother_father(mother_obj, father_obj):
            // Do your logic here
            // return your result 

В шаблоне вы используете шаблонтеги, такие как:

{% load custom_tags %}

{% for mother in mothers_list %}
    {% for father in fathers_list %}
        {{ mother|mother_father:father }}
0 голосов
/ 02 сентября 2011

Вы можете выполнить эту обработку в функции просмотра.

В views.py:

children_list = []
for mother in mothers_list:
    for father in fathers_list:
        try:
            child = Child.objects.get(mother=mother, father=father)
        except Child.DoesNotExist:
            child = None
        children_list.append(child)

Тогда в вашем шаблоне:

{% for c in children_list %}
    {{ c.name }}
0 голосов
/ 29 августа 2011

Чтение https://docs.djangoproject.com/en/dev/howto/custom-template-tags/ и запись пользовательского тега.

...