flag attempts to change signature of __init__ on Models
As a relative Django newbie, I tried to redefine the init method on my Model classes to take additional parameters.
This failed silently - the objects were created but Model.save() did not persist the objects to the database.
I didn't see anything in the Models documentation or FAQ about this, either.
After some searching I found the answer here, namely, "don't do that":
http://stackoverflow.com/questions/843580/writing-a-init-function-to-be-used-in-django-model
Feature request: add a warning which is thrown whenever you subclass django.db.models.Model
with a nonstandard init method. The wording could be something like: "Changing the calling signature
of init on subclasses of Model may prevent objects from being saved correctly. Try using a
classmethod factory pattern to create objects instead."
Doc request: add this to the Models documentation
Attachments
(1)
- patch_17436.diff
(1.6 KB
) - added by Zbigniew Siciarz 13 years ago.
- Note about overriding init and other approaches to customize instance creation.
Download all attachments as:
.zip
Change History
(6)
Component: |
Database layer (models, ORM) → Documentation
|
Triage Stage: |
Unreviewed → Accepted
|
Type: |
New feature → Cleanup/optimization
|
Owner: |
changed from nobody to Zbigniew Siciarz
|
Resolution: |
→ fixed
|
Status: |
new → closed
|
Accepted as a documentation request.
With a dynamic language, it will always be possible for a developers to shoot himself into the foot. We can't put warnings for all possible mistakes.