Как я могу передать параметр методу модели в шаблоне django?
Привет всем у меня вопрос по шаблону django и методу models include function parameter.
пример кода в models.py
class Item(models.Model):
name = models.CharField(max_length=30)
price = models.IntegerField()
owner = models.ForeignKey('User',on_delete=models.CASCADE)
def get_something(self,requestuser): # <-- pass request.user here
// calculate something here
return "output"
в файле views.py
def assets(request):
return render(request, 'index.html', {'items':Item.objects.filter(owner=request.user)})
в шаблоне
{% for item in items %}
<h1>{{item.name}}</h1>
<h2>{{item.price}}</h2>
<h2>{{item.get_something(request.user) }}</h2> <!-- How to inject request.user to get_something Here -->
{% endfor %}
Вы можете использовать пользовательский тег для этого случая. Проверьте this
. Мне также пришлось создать его для своего проекта, поскольку мне нужно было передать аргументы из шаблона в метод моей модели.
Я создал папку в своем приложении под названием templatetags, и внутри этой папки были мои __init__.py и myTags.py:
from django import template
register = template.Library()
@register.simple_tag
def call_method(obj, method_name, *args):
method = getattr(obj, method_name)
return method(*args)
в шаблоне сначала я импортирую свои теги, затем использую свой пользовательский тег:
{% load myTags %}
{% call_method model 'method' argument1 argument2 argument3... %}