Look at this line:
https://github.com/django/django/blob/df9f2e41fae68e2079db61e07569fdc89d1d6343/django/db/backends/sqlite3/schema.py#L73
{{{
if field.has_default():
mapping[field.column] = self.quote_value(
self.effective_default(field)
)
}}}
Main is that effective default will be used only when field already has
default.
That is not correct, because `effective_default` decides what default
would be used.
The second minor problem is that `field.has_default()` check is already in
`effective_default` method, so we don't need to call it twice.
--
Ticket URL: <https://code.djangoproject.com/ticket/23987>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Comment:
If it will be reviewed as bug, I'll create patch for it.
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:1>
Comment (by coldmind):
As I can see need to have something like this.
Not sure about `ManyToManyField`, but without check for `ManyToManyField`
some tests fails.
{{{
Index: django/django/db/backends/sqlite3/schema.py
===================================================================
--- django/django/db/backends/sqlite3/schema.py (date 1417898599000)
+++ django/django/db/backends/sqlite3/schema.py (revision )
@@ -69,8 +69,8 @@
# Add in any created fields
for field in create_fields:
body[field.name] = field
- # If there's a default, insert it into the copy map
- if field.has_default():
+ # Choose default and insert it into the copy map
+ if not isinstance(field, ManyToManyField):
mapping[field.column] = self.quote_value(
self.effective_default(field)
)
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:2>
* stage: Unreviewed => Accepted
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:3>
* status: new => assigned
* owner: nobody => coldmind
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:4>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"089047331d972c0ee58d13476fc54f2118bf1359"]:
{{{
#!CommitTicketReference repository=""
revision="089047331d972c0ee58d13476fc54f2118bf1359"
Fixed #23987 -- Made SQLite SchemaEditor always use effective_default().
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:5>
Comment (by Tim Graham <timograham@…>):
In [changeset:"1690b92b0d53e625ef6623a317149013725015af"]:
{{{
#!CommitTicketReference repository=""
revision="1690b92b0d53e625ef6623a317149013725015af"
[1.7.x] Fixed #23987 -- Made SQLite SchemaEditor always use
effective_default().
Backport of 089047331d972c0ee58d13476fc54f2118bf1359 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:6>
Comment (by Tim Graham <timograham@…>):
In [changeset:"ac5f2a4ef7b9993502ebc02f487cbb06bfb9bf0a"]:
{{{
#!CommitTicketReference repository=""
revision="ac5f2a4ef7b9993502ebc02f487cbb06bfb9bf0a"
Fixed refs #23987 test on Oracle.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:7>
Comment (by Tim Graham <timograham@…>):
In [changeset:"66c0529b3edb40e25713cbf32ea8794befc829ae"]:
{{{
#!CommitTicketReference repository=""
revision="66c0529b3edb40e25713cbf32ea8794befc829ae"
[1.7.x] Fixed refs #23987 test on Oracle.
Backport of ac5f2a4ef7b9993502ebc02f487cbb06bfb9bf0a from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:8>
--
Ticket URL: <https://code.djangoproject.com/ticket/23987#comment:9>