Django / Python:使用Template中的参数调用模型/类函数

问题描述 投票:0回答:1

在Django 2.0中,我试图从类中调用一个方法,从模板中调用。

从模板打电话

{% activity.liked_by(user) %}

来自班级的方法

class Activity(models.Model):
    name = models.CharField(max_length=15)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def liked_by(self, user):
        return Like.objects.filter(activity_id=self.id, user_id=user.id)

我知道这是不可能的,但最好的替代方案是什么?如果不将用户作为参数传递,我就无法执行查询。

谢谢!

python django class templates arguments
1个回答
2
投票

您可以在传递给模板的上下文中提供查询,也可以使用custom template tag。让我们假设创建的文件名为my_template_tags.py(请注意,此文件必须在正确的目录结构中)。

from django import template

register = template.Library()

@register.simple_tag
def get_method(test, user):
    return Test.objects.filter(test_id=test.id, user_id=user.id)

然后在模板中:

{% load my_template_tags %}
{% get_method test user %}
© www.soinside.com 2019 - 2024. All rights reserved.