我试过了:
field = model._meta.get_field_by_name(field_name)[0]
my_type = field.get_internal_type
这不起作用,因为它返回了一些绑定方法,如:
<bound method URLField.get_internal_type of <django.db.models.fields.URLField:my_url>>
我想要一些我可以使用的东西,如CharField,URLField,DoubleField等。
我如何获得像URLField这样的内容,以便我可以验证网址是否格式正确?
答案 0 :(得分:1)
在Python中,如果要调用函数或方法,则必须在参数周围使用括号。如果没有参数,则只使用空括号。
您正在做的只是引用方法本身,而不是调用它。
这是一个简化的例子:
>>> def foo():
... return 3
>>> foo()
3
>>> foo
<function __main__.foo>
你无法从函数中“提取”结果;你必须打电话。*
因此,在您的示例中,只需将第二行更改为:
my_type = field.get_internal_type()
*好的,在这种情况下,因为函数总是返回一个常量值,你可以通过例如从源或func_code.co_consts
元组中提取它来提取它。但显然这不会起作用;如果您想获得datetime.now()
的值,它不会存储在now
方法的任何位置,当您调用方法时,它会立即生成。