来自Django文档:
如何实现落后关系?
其他对象关系映射器要求您定义关系 双方。 Django开发人员认为这违反了 DRY(不要重复自己)原则,所以Django只需要你 在一端定义关系。
但是如果模型类不知道哪个是可能的,那怎么可能呢? 其他模型类与其相关,直到其他模型类 加载?
答案在于INSTALLED_APPS设置。第一次任何 模型加载后,Django迭代INSTALLED_APPS中的每个模型 并根据需要在内存中创建向后关系。 本质上,INSTALLED_APPS的一个功能是告诉Django 整个模型域。
有没有办法获得这个ORM模型?我正在尝试调试一些非自动创建的反向关系,这将有助于查看整个ORM Django已创建。
答案 0 :(得分:1)
没有特定的ORM“模型”,但有一些东西可以帮助你。
from django.db.models.loading import get_models
get_models()
将返回每个已注册模型的列表,此列表是您描述的机制循环。
YourModel._meta.get_all_related_objects_with_model()
此函数循环遍历每个注册模型中的每个字段,并查找并返回与YourModel
的任何反向关系。
来自Options
的{{1}}课程(django.db.models.options
是一个YourModel._meta
对象)是一个值得环顾四周的好地方。
答案 1 :(得分:0)
Django没有“创建”ORM所以这个问题毫无意义。如果您想知道ORM为模型类添加哪些属性以支持向后关系,那么您可以