如何以编程方式获取Django模型字段的max_length?

Mat*_*Mat 62 python oop django django-models

假设我有一个像这样的Django类:

class Person(models.Model):
    name = models.CharField(max_length=50)
    # ...
Run Code Online (Sandbox Code Playgroud)

我如何以编程方式获得max_lengthname字段的值?

Ben*_*mes 86

Person._meta.get_field('name').max_length会给你这个价值.但必须使用_meta表明这是你在正常使用中不应该做的事情.

编辑:正如卡尔指出的那样,这种命名具有误导性,使用它似乎完全可以接受:http://www.b-list.org/weblog/2007/nov/04/working-models/

  • 很好的答案,但不同意第二个评论.在_meta前面的下划线是误导性的,IMO(我看到Django核心开发者同意;部分原因只是为了避免与模型字段的名称冲突).使用_meta并不是一个难闻的气味,它是一个很好的; 这意味着你正在干嘛而没有做出无根据的假设. (9认同)

Gin*_*lgo 5

问题是关于模型,但对于试图对表单做同样的事情的人(这就是我在这个线程中结束的方式),我认为这种方法非常简单明了:
1. 在模板中:
{{form.name.field.max_length}}

2. 在 python 代码中(例如在视图中)
form.name.field.max_length

  • 不幸的是,问题是关于模型,而不是表格 (4认同)
  • @NathanTregillus 是的,你完全正确,但这就是我在这篇文章中的结尾,寻找如何对表单执行此操作。所以我认为其他人也会在这里寻找表单的解决方案。我编辑了我的答案以澄清这一点。谢谢。 (2认同)