gpt4 book ai didi

django - 将参数传递给 Django 模板中的模型方法

转载 作者:行者123 更新时间:2023-12-03 03:48:18 25 4
gpt4 key购买 nike

我试图获取指定企业的所有客户,但是客户模型中有一个类方法可以获取基于同一企业的一些信息...让我用代码解释一下...

class Business(models.Model):
...
customers = models.ManyToManyField(Customer, blank=True, null=True)

class Customer(models.Model):
...
def get_something(self, obj_business)
...

现在,在我看来,我从指定企业获取所有客户,如下所示:

obj_customers = obj_business.customers.all()

然后我尝试在我的模板中打印此内容:

{% for obj_customer in obj_customers %}
{{ obj_customer.get_something ....... }}

但是,是的,没有办法传递参数...我想知道是否有我遗漏的东西...

我想知道是否有另一种解决方案而不是创建模板标记...因为它是一个ManyToManyField,如果customers字段只是ForeignKey,则无需向该方法传递参数。 .

最佳答案

您可以创建一个简单的模板标记来调用带有任何参数的任何方法:

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)

然后在您的模板中:

{% call_method obj_customer 'get_something' obj_business %}

但是,当然,创建专门的模板标签更安全:-)

@register.simple_tag
def get_something(customer, business):
return customer.get_something(business)

模板:

{% get_something obj_customer obj_business %}

关于django - 将参数传递给 Django 模板中的模型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28513528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com