﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
26715	Model objects with deferred fields don't send pre_save or post_save signals to receivers with explicit sender	Evan Heidtmann	nobody	"Because the objects returned by `Model.objects.only(*fields)` are of a special object type, and that type is used as the `sender` for the `post_save` signal send, these deferred objects never invoke signal handlers that registered with an explicit signal sender.

Something like this should reproduce:

{{{
# models.py
class MyModel(models.Model):
     bigfield = models.TextField(null=True, blank=True)

# signals.py
@receiver.register(post_save, sender=models.MyModel)
def mymodel_post_save_handler(sender, **kwargs):
     print ""handler called""

# repro code
m = MyModel.objects.create()
# (handler is called)
deferred_m = MyModel.objects.only('id').get(id=m.id)
deferred_m.bigfield = 'yo'
deferred_m.save()
# (handler should be called, but is not)
}}}

Happy to produce a proper test app/project if needed.

Evan"	Uncategorized	new	Database layer (models, ORM)	1.10	Normal				Unreviewed	0	0	0	0	0	0
