Atm*_*tma 22 python django django-models
我正在做以下事情:
model._meta.get_field('g').get_internal_type
Run Code Online (Sandbox Code Playgroud)
返回以下内容:
<bound method URLField.get_internal_type of <django.db.models.fields.URLField: g>>
Run Code Online (Sandbox Code Playgroud)
我只想知道这个字段是"URLField".如何从此输出中提取?
注意:我这样做是为了我可以对字段进行验证.例如,如果是网址,我想检查它是否格式正确.
aba*_*ert 32
如果你这样做:
model._meta.get_field('g').get_internal_type()
Run Code Online (Sandbox Code Playgroud)
你不可能得到那样的结果.
相反,你这样做:
model._meta.get_field('g').get_internal_type
Run Code Online (Sandbox Code Playgroud)
其中,作为解释在这里,不调用该方法,它只是指的是方法绑定方法的对象.返回值不是该绑定方法对象的一部分,它是在调用方法时由方法创建的.所以,你必须打电话给它.所以你需要括号.
Pra*_*aut 10
你可以这样做:
from django.db.models.fields import *
....
if model._meta.get_field('g').__class__ is UrlField:
....
....
Run Code Online (Sandbox Code Playgroud)
或者如果您想使用 String 而不是仅使用UrlField
....
if type(model._meta.get_field('g')) is eval('UrlField'):
....
....
Run Code Online (Sandbox Code Playgroud)
或者
isinstance(model._meta.get_field('g'), UrlField)
# This will return Boolean result
Run Code Online (Sandbox Code Playgroud)
您也可以使用相等的 '==' 而不是 'is'
您可以查看官方文档以获取更多信息
| 归档时间: |
|
| 查看次数: |
15983 次 |
| 最近记录: |