#30427: Descriptors not accessible for inherited models. -------------------------------------+------------------------------------- Reporter: Jarek | Owner: nobody Glowacki | Type: Bug | Status: new Component: Database | Version: master layer (models, ORM) | Keywords: inherited Severity: Normal | descriptor deferred Triage Stage: | Has patch: 0 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -------------------------------------+------------------------------------- Example: {{{ class Base(models.Model): A = 1
class Inherited(Base): A = models.IntegerField(default=0) B = models.IntegerField(default=0) }}} And now take a look at this: {{{ >>> Inherited.A 1 >>> Inherited.B <django.db.models.query_utils.DeferredAttribute object at 0x110ed5470> }}} Descriptor `A` is not accessible. Behaviour is correct when accessing instance attributes, which is why I think this has gone under the radar.. Real use case: We try to apply a `FieldTracker` (from Django Model Utils) onto a custom user model: {{{ class User(AbstractBaseUser): is_active = models.BooleanField(_('active'), default=True) tracker = FieldTracker() }}} FieldTracker falls over wrapping the `is_active` field, because instead of getting a `DeferredAttribute` when accessing `User.is_active`, it gets a mouthful of `True`, which is the value assigned to `is_active` in `AbstractBaseUser`. Happy to submit a failing test and propose a fix if issue is accepted. Issue replicated on Django2.1.5, but I suspect it's like this on master still.. -- Ticket URL: <https://code.djangoproject.com/ticket/30427> 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 django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/050.b42f0112bd9f2e4fac8b55e4e825dc15%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.