Opened 41 hours ago
Last modified 29 minutes ago
#36844 assigned Cleanup/optimization
Update packaging tutorial and AppConfig docs to mandate setting default_auto_field for reusable apps
| Reported by: | Jacob Walls | Owned by: | Amar |
|---|---|---|---|
| Component: | Documentation | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Ready for checkin | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | yes | UI/UX: | no |
Description
A reusable (third-party) app that:
- has models
- but does not set
AppConfig.default_auto_field
is in a "completely broken" situation, given that any user attempting to use DEFAULT_AUTO_FIELD in their own settings will generate migrations for the reusable app, which can conflict with later migrations shipped by that app, or possibly get stored in the app's installation location:
Third-party apps should set default_auto_field so that the migrations the app includes match the models.
This discussion took place in a PR that was not accepted proposing to advise on user workarounds. Instead, I think we should advise app authors to do the right thing.
That would include:
- strengthening the wording in
AppConfig.default_auto_fielddocs, replacing "You can use this... for third party applications" to something like "Third-party applications *must* set this ..." - Fixing the tutorial to show this step under Packaging your app. To my knowledge (I'm hoping someone will confirm), when you follow the tutorial and arrive at this step modeling how to make your app reusable, there is no
default_auto_fieldattribute on theAppConfigin apps.py.
This would be an approachable issue for a new contributor, as it involves following the tutorial to verify completeness and accuracy.
Change History (4)
comment:1 by , 40 hours ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:2 by , 38 hours ago
| Owner: | set to |
|---|---|
| Status: | new → assigned |
comment:3 by , 13 hours ago
| Has patch: | set |
|---|
comment:4 by , 29 minutes ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
PR submitted: https://github.com/django/django/pull/20503
AppConfig.default_auto_fielddocumentation to clarify that reusable applications must set this attributedefault_auto_fieldto thePollsConfigexample in the packaging tutorial