获取由Django创建的ORM
从Django文档:
落后的关系如何可能?
其他对象关系映射器需要你定义关系。 Django开发人员认为这违反了DRY(Do not Repeat Yourself)原则,因此Django只要求您在一端定义关系。
但是这怎么可能呢,因为一个模型类不知道哪些其他模型类与它相关,直到这些其他模型类被加载?
答案在于INSTALLED_APPS设置。 加载任何模型时,Django会遍历INSTALLED_APPS中的每个模型,并根据需要在内存中创建后向关系。 实质上,INSTALLED_APPS的一个功能是告诉Django整个模型域。
有没有办法得到这个ORM模型? 我试图调试一些不是自动创建的反向关系,它会真正帮助您查看整个ORM Django创建的关系。
没有特定的ORM“模型”,但有几件事可能会对您有所帮助。
from django.db.models.loading import get_models
get_models()
会返回给你一个每个注册模型的列表,这个列表就是你正在描述的机制所循环的内容。
YourModel._meta.get_all_related_objects_with_model()
此函数遍历每个注册模型中的每个字段,并找到并返回任何反向关系到YourModel
。
django.db.models.options
的Options
类( YourModel._meta
是一个Options
对象)是查看这些东西的好地方。
Django不会“创建”一个ORM,所以这个问题没有意义。 如果你想知道ORM为你的模型类添加什么样的属性来支持后向关系,那么你可以