Python Django:如何使用自定义模板标记动态获取字段值?

Python Django:如何使用自定义模板标记动态获取字段值?,python,django,dynamic,model,templatetags,Python,Django,Dynamic,Model,Templatetags,我正在编写一个通用模板标记,它可以根据模板文件中的用户输入动态返回模型的字段值。这个想法在《实用Django项目第二版》一书中提到过,但是这本书的版本得到了一个对象列表,我只想得到一个对象的值。我想获取站点设置(标题、标语等)并动态传递模板,这样我就不必再次编写代码来获取每个字段的值 以下是我迄今为止所做的工作 为模型定义admin.py(此处不包括,因为它不重要) 定义了一个模型: 定义了一个模板标记文件,注释行就是我卡住的地方 base.html中的模板查询: {% load general

我正在编写一个通用模板标记,它可以根据模板文件中的用户输入动态返回模型的字段值。这个想法在《实用Django项目第二版》一书中提到过,但是这本书的版本得到了一个对象列表,我只想得到一个对象的值。我想获取站点设置(标题、标语等)并动态传递模板,这样我就不必再次编写代码来获取每个字段的值

以下是我迄今为止所做的工作

为模型定义admin.py(此处不包括,因为它不重要)

定义了一个模型:

定义了一个模板标记文件,注释行就是我卡住的地方

base.html中的模板查询:

{% load general_tags %}
{% get_site_att general.Naming title as title %}
<h1 id="branding">{{title}}</h1>
{% get_site_att general.Naming tagline as tagline %}
<h2 id="tagline">{{tagline}}</h2>
{%load general_tags%}
{%get\u site\u att general.将标题命名为title%}
{{title}}
{%get\u site\u att general.将标记行命名为标记行%}
{{tagline}}

我已经尝试了我能想到的所有可能的方法,但就是不能让它工作。非常感谢您的帮助。谢谢。

我找到了解决方案:

在注释行中,使用以下代码:

var = self.model.objects.get(site_id__exact=current_site.id)
context[self.varname] = var.__dict__[self.field]#this will get the field's value dynamically, which is what I was looking for

Python中获取另一个变量中名称的属性的通常方法是使用
getattr

context[self.varname] = getattr(var, self.field)

这可能是一个可能的解决方案,如果你有任何其他的解决方案,请建议!或者更多的Django-ey,而不是var.uuu dict.[self.field],您可以使用var._meta.get.[field(self.field)
var = self.model.objects.get(site_id__exact=current_site.id)
context[self.varname] = var.__dict__[self.field]#this will get the field's value dynamically, which is what I was looking for
context[self.varname] = getattr(var, self.field)