如何在Django模型上获取数据类型列表?

时间:2014-11-04 00:18:14

标签: python django django-models

我正在获取我的模型字段列表,如下所示:

c = Client.objects.all().first()
fields = c._meta.get_all_field_names()

如何获取这些字段的数据类型(CharField,Int等)列表?有没有比在每个字段上查找get_internal_type属性更简单的方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用:

raw_list = c._meta.get_fields_with_model()    

执行raw_list = c._meta.get_fields_with_model()时,raw_list包含以下内容:

((<django.db.models.fields.AutoField: id>, None), (<django.db.models.fields.TextField: signature>, None) etc...

获得&#34;解析&#34;列表只包含我们可以执行的数据类型的名称:

[item[0].__class__.__name__ for item in raw_list._meta.get_fields_with_model()]

或使用 get_internal_type

[item[0].get_internal_type() for item in raw_list._meta.get_fields_with_model()]

在这两种方式中,您都会得到如下列表:

['AutoField', 'TextField', 'TextField', 'FloatField', 'CharField', 'BooleanField', 'IntegerField', 'ImageField', 'BooleanField'...

只是代码:

raw_list = c._meta.get_fields_with_model() 
parsed_list = [item[0].__class__.__name__ for item in raw_list._meta.get_fields_with_model()]