{{{
#views.py
class CollectorUpdate(generic.UpdateView):
model = ReportBase
fields = ['title', 'db', 'additionalPath', 'start_date', 'end_date',
'reportTimestamp',
'updMethod', 'cronStr', 'code', 'code_renew']
template_name = 'collector/collector_update_form.html'
}}}
and subscribe to `post_save` signal:
{{{
@receiver(signal=signals.post_save, sender=ReportBase)
def runCron(sender, **kwargs):
"""Signal handler. Run cron after post_save signal on """
collector = kwargs.get('instance')
updated_fields = kwargs.get('update_fields')
}}}
but `updated_fields` always is `None`
I think the problem is that in generic.UpdateView into `.save()` method it
is necessary to register a field `field_update` with interesting for me
fields.
As workaround i'm using an instyance of saved object:
{{{
collector = kwargs.get('instance')
}}}
but it's looks strange and it is inconvenient. I have to do a lot of extra
work
--
Ticket URL: <https://code.djangoproject.com/ticket/30710>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* status: new => closed
* resolution: => wontfix
Comment:
This is the expected behaviour
([https://docs.djangoproject.com/en/2.2/ref/signals/#django.db.models.signals.post_save
as documented]).
As per [https://docs.djangoproject.com/en/2.2/ref/models/instances
/#specifying-which-fields-to-save Specifying which fields to save] the
saved fields are only limited if you pass `update_fields`, otherwise it's
all, so you don't need it in `post_save`.
If you want to pass `update_fields`, override your form's `save()`
accordingly.
--
Ticket URL: <https://code.djangoproject.com/ticket/30710#comment:1>