Django 计算一个模型有多少个字段

Django 计算一个模型有多少个字段,django,Django,我想知道是否有办法知道一个模型包含多少字段 例如: class Post(models.Model): title = models.TextField() body = models.TextField() sub_title = models.TextField() summary = models.TextField() 我可以数一数,但我想知道是否有一个内置的方法允许我这么做 理想情况下,任务/代码应为: Post.number\u fied-->输出-

我想知道是否有办法知道一个模型包含多少字段

例如:

class Post(models.Model):
    title = models.TextField()
    body = models.TextField()
    sub_title = models.TextField()
    summary = models.TextField()
我可以数一数,但我想知道是否有一个内置的方法允许我这么做

理想情况下,任务/代码应为:

Post.number\u fied
-->输出-->
4


是否存在这样的情况?

据我所知,没有内置项,您可以通过以下方式获得字段:

>>> len(Post._meta.fields)
5
我们可以在
BaseModel
类和子类上定义该函数,以使该函数可用于所有子类:

class BaseModel(models.Model):

    class Meta:
        abstract = True

    @classmethod
    def number_of_fields(cls):
        return len(cls._meta.fields)

class Post(BaseModel):
    title = models.TextField()
    body = models.TextField()
    sub_title = models.TextField()
    summary = models.TextField()
但是请注意,这将返回
5
,因为模型在这里有一个(隐式)主键。

您可以试试这个

>>> Post._meta.fields.__len__()
5
>>> Post._meta.fields.__len__()
5