Как передать три переменные в пользовательский тег шаблона? - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь передать 3 переменные в мой пользовательский фильтр, но не могу этого сделать.Есть ли такая возможность в Джанго?

{{ item.cost|pay_blago:'{{item.can_pay_blago_to_currency}}, {{item.rest}}'}}

@register.filter
def pay_blago(cost, args):
    print(args.split(','))

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Если вам нужно что-то, что является функцией экземпляра Item, самый простой способ - это свойство, определенное в Item. В шаблоне, скажем,

{{item.cost_pay_blago}}

и на модели Item

# this is needed by template foo/bar.html
@property
def cost_pay_blago( self):

    result = # some value based on self.cost, self.rest and self.can_pay_blago_to_currency
    return  result 

если item не является экземпляром модели или если функция объединяет данные из нескольких объектов, вы, вероятно, вычисляете их в представлении и помещаете в контекст, с которым вы отображаете шаблон.

Или вы можете использовать шаблонизатор Jinja, но это очень большой молот, чтобы использовать его, если это маленький орех.

0 голосов
/ 30 мая 2019

Django допускает только один параметр.Вы можете отправить его в виде списка / кортежа и разделить его внутри фильтра.

Для этого тоже есть билет с (флаг wontfix) https://code.djangoproject.com/ticket/1199

...