[Django] #24305: Allow to override abstract model fields

31 views
Skip to first unread message

Django

unread,
Feb 8, 2015, 1:43:29 PM2/8/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
----------------------------------------------+--------------------
Reporter: knbk | Owner: knbk
Type: New feature | Status: new
Component: Database layer (models, ORM) | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------------------+--------------------
Discussion on django-developers: https://groups.google.com/forum/#!topic
/django-developers/6zUfnElOIks

I suggest we allow fields that are only defined on an abstract base class
of a model, to be overridden by models directly inheriting the abstract
class. As fields on an abstract class are python-only, and don't live in
the database yet, they can easily be switched for another field. If you
use abstract models from sources outside your control, or if you reuse an
abstract model multiple times, this allows for some flexibility without
the need to copy the complete abstract class.

--
Ticket URL: <https://code.djangoproject.com/ticket/24305>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Feb 8, 2015, 1:45:06 PM2/8/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------

Reporter: knbk | Owner: knbk
Type: New feature | Status: new
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by knbk):

* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0


Comment:

WIP: https://github.com/knbk/django/tree/ticket_24305

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:1>

Django

unread,
Feb 10, 2015, 7:21:09 AM2/10/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------

Reporter: knbk | Owner: knbk
Type: New feature | Status: new
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timgraham):

* stage: Unreviewed => Accepted


--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:2>

Django

unread,
Feb 21, 2015, 6:14:48 PM2/21/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------

Reporter: knbk | Owner: knbk
Type: New feature | Status: new
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by knbk):

* has_patch: 0 => 1


Comment:

PR: https://github.com/django/django/pull/4184

Feedback welcome, especially on the documentation.

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:3>

Django

unread,
Jun 13, 2015, 3:07:02 PM6/13/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------

Reporter: knbk | Owner: knbk
Type: New feature | Status: new
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timgraham):

* needs_better_patch: 0 => 1


Comment:

Chatted with Loic briefly and he indicated he didn't think the locking
approach is an appropriate implementation. The approach also needs to
integrate with the upcoming work on virtual fields, so it may take some
time to sort that out.

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:4>

Django

unread,
Jul 29, 2015, 1:50:21 PM7/29/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned

Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by ar45):

* status: new => assigned
* owner: knbk => ar45


--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:5>

Django

unread,
Jul 29, 2015, 2:03:22 PM7/29/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timgraham):

* needs_better_patch: 1 => 0


Comment:

There is a commit here with an alternate approach:
https://github.com/knbk/django/commit/7ac5b58587ea2a153766d1601965734731609cdf
(having difficulty finding what branch it's part of so I could create a
pull request).

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:6>

Django

unread,
Aug 9, 2015, 2:11:52 PM8/9/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by ar45):

new PR https://github.com/django/django/pull/5122

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:7>

Django

unread,
Aug 13, 2015, 1:37:42 PM8/13/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timgraham):

* needs_better_patch: 0 => 1


Comment:

Tests are not passing.

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:8>

Django

unread,
Aug 18, 2015, 4:00:31 PM8/18/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by ar45):

* needs_better_patch: 1 => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:9>

Django

unread,
Aug 19, 2015, 1:25:39 PM8/19/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by ar45):

* cc: ar45 (added)


--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:10>

Django

unread,
Sep 5, 2015, 9:49:11 AM9/5/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timgraham):

* needs_better_patch: 0 => 1


Comment:

The patch is missing some tests cases as noted in Loic's review.

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:11>

Django

unread,
Sep 21, 2015, 9:26:18 PM9/21/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by ar45):

* needs_better_patch: 1 => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:12>

Django

unread,
Oct 1, 2015, 7:38:52 PM10/1/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin

Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by ar45):

* stage: Accepted => Ready for checkin


--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:13>

Django

unread,
Oct 10, 2015, 5:04:19 AM10/10/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by RamezIssac):

* cc: ramezashraf@… (added)
* stage: Ready for checkin => Accepted


Comment:

I believe that the correct ticket flow is a person other then who supplied
the patch can mark Ready For Checkin.
Kindly review
[https://docs.djangoproject.com/en/1.8/internals/contributing/new-
contributors/#new-contributors-faq]
and
[https://docs.djangoproject.com/en/1.8/internals/contributing/triaging-
tickets/]

Thanks

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:14>

Django

unread,
Oct 10, 2015, 7:42:42 AM10/10/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin

Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timgraham):

* stage: Accepted => Ready for checkin


Comment:

I reviewed the patch and asked Aron to mark the patch as such after
updating for my comments. :-)

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:15>

Django

unread,
Oct 10, 2015, 7:45:33 AM10/10/15
to django-...@googlegroups.com
#24305: Allow to override abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by RamezIssac):

I apologize for any inconvenience then :-)

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:16>

Django

unread,
May 14, 2016, 5:47:15 PM5/14/16
to django-...@googlegroups.com
#24305: Allow overriding abstract model fields

-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:17>

Django

unread,
May 16, 2016, 7:32:57 AM5/16/16
to django-...@googlegroups.com
#24305: Allow overriding abstract model fields
-------------------------------------+-------------------------------------
Reporter: knbk | Owner: ar45
Type: New feature | Status: closed

Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham <timograham@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"85ef98dc6ec565b1add417bd76808664e7318026" 85ef98dc]:
{{{
#!CommitTicketReference repository=""
revision="85ef98dc6ec565b1add417bd76808664e7318026"
Fixed #24305 -- Allowed overriding fields on abstract models.

Fields inherited from abstract base classes may be overridden like
any other Python attribute. Inheriting from multiple models/classes
with the same attribute name will follow the MRO.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:18>

Django

unread,
May 8, 2025, 11:07:21 AMMay 8
to django-...@googlegroups.com
#24305: Allow overriding abstract model fields
-------------------------------------+-------------------------------------
Reporter: Marten Kenbeek | Owner: Aron
| Podrigal
Type: New feature | Status: closed
Component: Database layer | Version: dev
(models, ORM) |
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Sarah Boyce <42296566+sarahboyce@…>):

In [changeset:"84e91262d6b94d35b381d0a46ff5402eaac7c996" 84e91262]:
{{{#!CommitTicketReference repository=""
revision="84e91262d6b94d35b381d0a46ff5402eaac7c996"
Fixed #36295, Refs #24305 -- Allowed overriding GenericForeignKey fields
on abstract models.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24305#comment:19>
Reply all
Reply to author
Forward
0 new messages