我正在做以下事情:
model._meta.get_field('g').get_internal_type
返回以下内容:
<bound method URLField.get_internal_type of <django.db.models.fields.URLField: g>>
我只想知道这个字段是“URLField”。如何从此输出中提取它?
注意:我这样做,以便我可以对字段进行验证。例如,如果是网址,我想检查它是否格式正确。
答案 0 :(得分:30)
如果你这样做:
model._meta.get_field('g').get_internal_type()
你不可能得到那样的结果。
相反,你这样做:
model._meta.get_field('g').get_internal_type
正如here所解释的那样,它不会调用该方法,它只是将该方法称为绑定方法对象。返回值不是该绑定方法对象的一部分,它是在调用方法时由方法创建的。所以,你必须打电话给它。所以你需要括号。
答案 1 :(得分:4)
答案是改为调用方法:
my_type = field.get_internal_type()
答案 2 :(得分:2)
您可以这样做:
from django.db.models.fields import *
....
if model._meta.get_field('g').__class__ is UrlField:
....
....
或如果您想使用String而不是仅与UrlField
一起使用....
if type(model._meta.get_field('g')) is eval('UrlField'):
....
....
或
isinstance(model._meta.get_field('g'), UrlField)
# This will return Boolean result
您还可以使用等号'=='代替'is'
您可以查看官方文档以获取有关的更多信息