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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django / Python:使用Template中的参数调用模型/类函数相关的知识,希望对你有一定的参考价值。

在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)

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

谢谢!

答案

您可以在传递给模板的上下文中提供查询,也可以使用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 %}

以上是关于Django / Python:使用Template中的参数调用模型/类函数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 django 将徽标添加到站点索引栏

如何在 Django 模板中实现面包屑?

Django 没有反向匹配错误 - 模板渲染

javascript中的Django模板实现?

将 Django direct_to_template 函数转换为使用基于类的视图

django 中的模板标签会执行两次吗?