[Django] #24236: Custom ManyToManyFields don't generate SQL database changes

12 views
Skip to first unread message

Django

unread,
Jan 28, 2015, 6:21:44 AM1/28/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: | Status: new
Uncategorized |
Component: Database | Version: 1.7
layer (models, ORM) |
Severity: Release | Keywords:
blocker |
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Regression introduced in 3d4a826174b7a411a03be39725e60c940944a7fe

If a custom `ManyToManyField` doesn't define a `get_internal_type():
return "ManyToManyField` the schema backends won't recognize it as a m2m
field and thus don't treat it as such.

This breaks existing code.

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

Django

unread,
Jan 28, 2015, 6:26:24 AM1/28/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Uncategorized | Status: new
Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by coldmind:

Old description:

> Regression introduced in 3d4a826174b7a411a03be39725e60c940944a7fe
>
> If a custom `ManyToManyField` doesn't define a `get_internal_type():
> return "ManyToManyField` the schema backends won't recognize it as a m2m
> field and thus don't treat it as such.
>
> This breaks existing code.

New description:

Regression introduced in 3d4a826174b7a411a03be39725e60c940944a7fe

If user writes a class, inherited from `ManyToManyField` ("custom" m2m
field) and doesn't define a `get_internal_type(): return "ManyToManyField`


the schema backends won't recognize it as a m2m field and thus don't treat
it as such.

This breaks existing code.

--

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

Django

unread,
Jan 28, 2015, 6:28:47 AM1/28/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: new

Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by MarkusH):

* has_patch: 0 => 1
* type: Uncategorized => Bug


Comment:

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

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

Django

unread,
Jan 28, 2015, 7:00:38 AM1/28/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: new
Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by coldmind):

Maybe bug is not here.
Related fields are not explicitly define the internal type. As I can see,
non-related fields define it explicitly. (for example,
https://github.com/django/django/blob/0f3ea8c0bc9c7f7f5e448b0b2137bc6351f5eae3/django/db/models/fields/__init__.py#L1785)

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

Django

unread,
Feb 2, 2015, 9:33:16 AM2/2/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: new
Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | 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):

* stage: Unreviewed => Accepted


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

Django

unread,
Feb 2, 2015, 9:40:20 AM2/2/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: new
Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | 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 MarkusH):

See also the discussion on the django- developers mailing list:
https://groups.google.com/d/msg/django-developers/-zQL0skuPh0/zUHWeAph6yAJ

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

Django

unread,
Feb 6, 2015, 3:36:42 PM2/6/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: new
Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 1

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timgraham):

* needs_docs: 0 => 1


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

Django

unread,
Feb 7, 2015, 12:44:38 PM2/7/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: new
Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | 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 MarkusH):

* needs_docs: 1 => 0


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

Django

unread,
Feb 7, 2015, 12:44:58 PM2/7/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: assigned

Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | 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 MarkusH):

* status: new => assigned


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

Django

unread,
Feb 7, 2015, 1:08:25 PM2/7/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: assigned
Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | 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


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

Django

unread,
Feb 9, 2015, 11:31:05 AM2/9/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: assigned
Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | 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 Markus Holtermann <info@…>):

In [changeset:"37b50db09230f90827008cc8404675d8b4876c10"]:
{{{
#!CommitTicketReference repository=""
revision="37b50db09230f90827008cc8404675d8b4876c10"
[1.7.x] Refs #24236 -- Added regression test for
3d4a826174b7a411a03be39725e60c940944a7fe

Thanks irc user ris for the report
}}}

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

Django

unread,
Feb 9, 2015, 11:31:07 AM2/9/15
to django-...@googlegroups.com
#24236: Custom ManyToManyFields don't generate SQL database changes
-------------------------------------+-------------------------------------
Reporter: MarkusH | Owner: MarkusH
Type: Bug | Status: closed

Component: Database layer | Version: 1.7
(models, ORM) |
Severity: Release blocker | 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 Markus Holtermann <info@…>):

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


Comment:

In [changeset:"f8c040e1676506e3bcba5f2744199fdcde430552"]:
{{{
#!CommitTicketReference repository=""
revision="f8c040e1676506e3bcba5f2744199fdcde430552"
[1.7.x] Fixed #24236 -- Treated inherited m2m fields as such if they don't
define get_internal_type()

Regression introduced in 3d4a826174b7a411a03be39725e60c940944a7fe

Thanks IRC user ris for the report, Loïc Bistuer, Anssi Kääriäinen and
Andriy Sokolovskiy for the discussion and Tim Graham for the review.
}}}

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

Reply all
Reply to author
Forward
0 new messages