gpt4 book ai didi

django - 在 Django 中获取模型的字段

转载 作者:行者123 更新时间:2023-11-28 19:32:32 27 4
gpt4 key购买 nike

给定一个 Django 模型,我试图列出它的所有字段。我已经看到一些使用 _meta 模型属性执行此操作的示例,但是 meta 前面的下划线是否表示 _meta 属性是私有(private)属性并且不应直接访问? ... 因为,例如,_meta 的布局将来可能会发生变化,而不是一个稳定的 API?

_meta 是这个规则的异常(exception)吗?它是否稳定且随时可用,或者访问它是否被认为是不好的做法?或者是否有一个函数或其他方法可以在不使用 _meta 属性的情况下内省(introspection)模型的字段?下面是一些链接的列表,显示了如何使用 _meta 属性执行此操作

非常感谢任何建议。

django object get/set field

http://www.djangofoo.com/80/get-list-model-fields

How to introspect django model fields?

最佳答案

_meta 是私有(private)的,但是比较稳定。人们正在努力对其进行形式化、记录并删除下划线,这可能发生在 1.3 或 1.4 之前。我想会努力确保向后兼容,因为很多人一直在使用它。

如果您特别关心兼容性,请编写一个采用模型并返回字段的函数。这意味着如果将来确实发生了某些变化,您只需更改一个功能。

def get_model_fields(model):
return model._meta.fields

我相信这会返回一个 Field 对象列表。要从实例中获取每个字段的值,请使用 getattr(instance, field.name)

更新:Django 贡献者正在开发一个 API 来替换 _Meta 对象,作为 Google Summer of Code 的一部分。参见:
- https://groups.google.com/forum/#!topic/django-developers/hD4roZq0wyk
- https://code.djangoproject.com/wiki/new_meta_api

关于django - 在 Django 中获取模型的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3647805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com