Prepend all pulpcore model fields in the Content model hierarchy with _ (e.g. '_type', '_id', '_notes')
1. Avoiding attribute naming collisions when content writer's subclass Content.
2. Allow users to easily see which attributes are from pulpcore and therefore common to all content types.
It was determined after long discussion here  that the solution to this should be to make sure all of the fields used by Pulpcore on models that are intended to be extended via the Plugin API are prepended with an underscore character.
Rename the Model fields here in the following ways:
created -> _created
id -> _id
last_updated -> _last_updated
As well as the MasterModel "type" field here:
type -> _type
Also for the Content model itself:
notes -> _notes
artifacts -> _artifacts
After changing the field names, a lot of other code will need to be fixed likewise. Serializers and Django ORM queries will need to use the new names, to start with.
This will be a backwards incompatible Beta change for both plugin writers and users. As such, the PR needs the 'breaking-changes', 'rest-API', and 'plugin-writer' labels.
As part of this issue, we should also switch to using 'pk' instead of 'id' in all Django ORM queries. 'pk' is a psuedonym for whatever the Primary Key field is set to, and will work no matter what said field is named. I would recommend searching for ".id", "id__in", and "id=" to make sure all of them are found, although that may not find all of them.
After making ^ change, go through pulp/pulp and update any references to the other field names.
After changing this in Pulpcore, we will need to go through each of the plugins (file, python, docker, rpm, ansible, + plugin_template) and do the same thing (replace usages of 'id' with 'pk' and other renamed fields with _field) in each of those. Link them back to this issue with "re" in the commit message.
Updated by dalley about 4 years ago
A side effect of this change will be that accidentally using 'id' in a Django ORM query will not behave as intended. If this becomes a problem, I would suggest creating a lint tool that searches for this pattern and reminds the programmer to use 'pk' instead.