Django - 确定传入模板标签的变量字段类型

2 投票
1 回答
9262 浏览
提问于 2025-04-15 18:59

我想写一个Django的模板标签,这个标签可以接收一个变量。

我希望这个模板标签的行为可以根据变量来源的模型字段类型(比如CharField、BooleanField、IntegerField等)以及字段定义中的其他信息(比如最大长度max_length等)来有所不同。

我可以很简单地把变量传递给这个模板标签,具体可以参考这个文档: 将模板变量传递给标签

有没有办法确定这个变量来源的模型字段的类名和模型参数呢?

换句话说:我能不能做一个这样的标签:

{% template_tag model.field %}

然后在标签的渲染函数中访问来自模型的信息呢?

field = models.CharField(max_length=40)

1 个回答

6

你可以使用Python的type函数来判断一个对象的类型。

if type(field) == models.CharField:
  #CharField specific code
elif type(field) == models.IntegerField:
  #IntegerField specific code

撰写回答