#31382: Silent failure when saving non-concrete field with update_fields
-----------------------------------------+------------------------
Reporter: Peter Law | Owner: nobody
Type: Uncategorized | Status: new
Component: Uncategorized | Version: 2.2
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-----------------------------------------+------------------------
If you have a non-concrete field which wraps a couple of concrete fields
(a bit like `GenericForeignKey`, though my codebase doesn't uses this for
compound data types rather than relations), then when you pass the name of
that non-concrete field to
`save(update_fields=('my_non_concrete_field',))`, the model will be saved
'''without''' saving that field and yet no error will be emitted.
I think that this could be because the check for the validity of the
`update_fields` is done against `meta.fields`
(https://github.com/django/django/blob/5c8441a0b8787c14b45fb761550571baea48604e/django/db/models/base.py#L714-L737)
while the later check for which fields to actually save is done using
`meta.local_concrete_fields`
(https://github.com/django/django/blob/5c8441a0b8787c14b45fb761550571baea48604e/django/db/models/base.py#L838-L844).
Ideally, I would like a way for a non-concrete field to be able to specify
the underlying concrete fields which should be saved on its behalf. That's
clearly rather complex though (and would likely have impacts beyond just
`update_fields`) -- a simpler solution would be to error about this case
so that the developer knows something is amis.
--
Ticket URL: <https://code.djangoproject.com/ticket/31382>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/053.e9405fba1be377b36847d402b0c3a6fa%40djangoproject.com.