首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django的嵌套Meta类是如何工作的?

Django的嵌套Meta类是如何工作的?
EN

Stack Overflow用户
提问于 2012-04-27 10:59:00
回答 4查看 138.7K关注 0票数 234

我使用的是Django,它允许人们通过使用class Meta向类添加额外的参数。

代码语言:javascript
复制
class FooModel(models.Model):
    ...
    class Meta:
        ...

我在Python文档中找到的唯一内容是:

代码语言:javascript
复制
class FooMetaClass(type):
    ...

class FooClass:
    __metaclass__ = FooMetaClass

然而,我不认为这是一回事。

EN

回答 4

Stack Overflow用户

发布于 2013-08-08 12:23:23

扩展Tadeck的Django回答,在Django中使用'class Meta:‘也是普通的Python。

内部类是一个方便的命名空间,用于在类实例之间共享数据(因此得名为Meta,表示“元数据”,但您可以随心所欲地叫它)。虽然在Django中它通常是只读的配置内容,但没有什么可以阻止您更改它:

代码语言:javascript
复制
In [1]: class Foo(object):
   ...:     class Meta:
   ...:         metaVal = 1
   ...:         
In [2]: f1 = Foo()
In [3]: f2 = Foo()
In [4]: f1.Meta.metaVal
Out[4]: 1
In [5]: f2.Meta.metaVal = 2
In [6]: f1.Meta.metaVal
Out[6]: 2
In [7]: Foo.Meta.metaVal
Out[7]: 2

你也可以直接在Django中探索它,例如:

代码语言:javascript
复制
In [1]: from django.contrib.auth.models import User
In [2]: User.Meta
Out[2]: django.contrib.auth.models.Meta
In [3]: User.Meta.__dict__
Out[3]: 
{'__doc__': None,
 '__module__': 'django.contrib.auth.models',
 'abstract': False,
 'verbose_name': <django.utils.functional.__proxy__ at 0x26a6610>,
 'verbose_name_plural': <django.utils.functional.__proxy__ at 0x26a6650>}

然而,在Django中,您更可能想要探索_meta属性,它是在创建模型时由模型metaclass创建的Options对象。在那里你可以找到所有Django类的“元”信息。在Django中,Meta只是用于将信息传递到创建_meta Options对象的过程中。

票数 59
EN

Stack Overflow用户

发布于 2012-04-27 11:02:43

Django的Model类专门处理一个名为Meta的属性,它是一个类。这不是一般的Python的事情。

Python元类则完全不同。

票数 25
EN

Stack Overflow用户

发布于 2019-03-11 18:53:42

内部Meta类文档:

这个django模型元数据文档是“任何不是字段的内容”,比如排序选项(ordering), database table name (db_table), or human-readable singular and plural names (verbose_name and verbose_name_plural)。这不是必需的,向模型添加Meta类完全是可选的。https://docs.djangoproject.com/en/dev/topics/db/models/#meta-options

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10344197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档