获取Django模型字段的Python类型?

joa*_*nbm 5 python django django-models

如何获得Django模型字段类的对应Python类型?

from django.db import models

class MyModel(models.Model):
    value = models.DecimalField()

type(MyModel._meta.get_field('value'))  # <class 'django.db.models.fields.DecimalField'>
Run Code Online (Sandbox Code Playgroud)

我正在寻找如何获取字段值的对应python类型- decimal.Decimal在这种情况下。

任何的想法 ?

ps我尝试使用字段的default属性来解决此问题,但是在字段未定义默认值的所有情况下,它可能无法正常工作。

Sky*_*Sky 2

我不认为你可以在那里以编程方式决定实际的 python 类型。部分原因是 python 的动态类型。如果您查看将值转换为 python 对象的文档,就会发现字段没有硬性预定义类型:您可以编写一个自定义字段,根据数据库值返回不同类型的对象。模型字段的文档指定了每个字段类型对应的 Python 类型,因此您可以“静态”执行此操作。

但是为什么需要提前知道 Python 类型才能序列化它们呢?序列化模块应该为您执行此操作,只需将您需要序列化的对象扔给它们即可。Python 是一种动态类型语言。