#36844 closed Cleanup/optimization (fixed)
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 (6)
comment:1 by , 3 weeks ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:2 by , 3 weeks ago
| Owner: | set to |
|---|---|
| Status: | new → assigned |
comment:3 by , 3 weeks ago
| Has patch: | set |
|---|
comment:4 by , 3 weeks 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