Django使用Meta类来获取许多其他对象信息。但是,它们将此信息存储在对象'_meta'中,该对象通过命名约定是私有的。
遍布django管理员(和其他地方)我看到opts = model._meta
之类的内容,然后他们会使用app_label
和verbose_name
等各种选项。
我是否可以自信地访问._meta并确保它将来不会改变,或者我最好创建一个'accessor'mixin或者在一个地方访问._meta的东西,所以如果它确实改变了我只需要更新一件事吗?
答案 0 :(得分:4)
我经常使用_meta
,到目前为止还没有任何问题。你可以在django文档中看到它们使用它的一个例子here,所以我觉得它或多或少都可以。请小心谨慎并编写好的测试,以便在以后升级django版本时知道任何问题。
答案 1 :(得分:2)
我在几个项目中使用_meta
,我想要对api无法提供的信息进行通用访问。我认为你可能大部分时间都可以,因为Django非常稳定。在单元测试中覆盖_meta
的使用情况可能是个好主意。