There certainly wasn't a conscious decision to change anything.
However, I'm having a little difficulty reproducing your problem.
Here's a quick test case:
class Whiz(models.Model):
CHOICES = (
(1,'First'),
(0,'Other'),
)
c = models.IntegerField(choices=CHOICES, null=True)
__test__ = {'API_TESTS':"""
>>> w = Whiz(c=1)
>>> w.save()
>>> w.get_c_display()
u'First'
>>> w.c = 0
>>> w.save()
>>> w.get_c_display()
u'Other'
# Test an invalid data value
>>> w.c = 9
>>> w.save()
>>> w.get_c_display()
9
# Test a blank data value
>>> w.c = None
>>> w.save()
>>> print w.get_c_display()
None
"""}
This test case works fine for me both pre-7977 and post-7977. Have I
misunderstood your use case here?
Yours,
Russ Magee %-)
This sounds like an unintended side-effect and probably worth opening a
ticket for. That change was meant to add a new feature, not change
existing code.
Regards,
Malcolm