是否可以获取字段的所有参数

时间:2015-12-09 09:18:19

标签: python django django-models

我需要的是从字段中返回所有参数:

示例:

Class MyClass(models.Model):
    field = models.Charfield(blank = True, null = True)

我想返回" field"的所有参数。来自" MyClass"。

这里,参数应为空白且为空。

2 个答案:

答案 0 :(得分:3)

对于模型MyModel

class MyModel(models.Model):
    my_field = models.Charfield(max_length=100)

您可以使用Meta api获取该字段。

>>> field = MyModel._meta.get_field('my_field')

然后,您可以使用deconstruct方法获取在实例化时传递给字段的kwargs。

>>> name, path, args, kwargs = field.deconstruct()
>>> print(kwargs)
{u'max_length': 100}

答案 1 :(得分:1)

我没有真正达到获取参数的目的,但我认为您可以使用' vars '。它是'__dict__'的包装。 由于django模型字段具有'__dict__'属性,' vars '将允许您访问字段的参数,如下所示:

def has_parameter(field_name, parameter_name):
    parameter_dict = vars(field_name)
    return not parameter_dict.get(parameter_name) == None

如果等于None意味着它尚未设置,否则它已设置或具有默认值。

在你的情况下:>>> has_parameter(field_name,'through')