Hi All,
The Options API is at the core of Django, it enables introspection of Django Models with the rest of the system. This enables lookups, queries, forms, admin to understand the capabilities of every model. The Options API is hidden under the _meta attribute of each model class. Options has always been a private API, but Django developers have always been using it in their own projects, in a non-official way. As part of my SoC project, I am exposing the new API for public use. As we are also formalizing a new API that has always existed, It is important to revisit the terminology and document it.
The current terminology is described here https://code.djangoproject.com/wiki/new_meta_api in the section concepts. I would encourage all contributors to read the document and express their opinion, if they think something should be changed.
A few interesting comments up till now:
Loic on the PR:
- I prefer "concrete" to "data" as it makes the parallel with "virtual" more obvious.
- "related_objects" > "reverse_rel"
- "related_m2m" > "reverse_m2m"
- What about reverse o2o, do they currently fall under "related_objects"?
- The main issue I have with "related" is that it doesn't provide a sense of direction, after all both sides of a FK have related objects waiting on the other end. I also like the symmetry between "m2m" and "reverse_m2m".
- Django isn't always consistent (and sometime actually wrong) in naming relations, especially in
django/db/models/fields/related.py. Now that we start documenting all those things, I see value in getting it right.
Thanks,
Daniel