在Django应用中直接访问 ._meta 是否安全?
Django使用Meta类来存储很多额外的对象信息。不过,它们把这些信息放在一个叫'_meta'的对象里,按照命名规则,这个对象是私有的。
在Django的管理后台(还有其他地方),我经常看到像opts = model._meta
这样的代码,然后他们会使用一些选项,比如app_label
和verbose_name
。
我能放心地访问._meta吗?我能确定它将来不会改变吗?还是说我应该创建一个“访问器”混入类,专门在一个地方访问._meta,这样如果它真的改变了,我只需要更新一个地方就行?
2 个回答
2
我在几个项目中使用 _meta
,这是为了能方便地获取一些API没有提供的信息。我觉得大部分时候这样做是没问题的,因为Django这个框架相对稳定。不过,最好还是在单元测试中对你使用 _meta
的地方进行一些覆盖测试,这样可以确保它的正常工作。
4
我经常使用 _meta
,到目前为止没有遇到什么问题。在 Django 的文档中,你也可以看到他们有一个使用它的例子,在这里,所以我觉得这样做大致上是可以的。只要小心点,写好测试,这样在你以后升级 Django 版本的时候,就能及时发现任何问题。