Opened 14 years ago
Closed 14 years ago
#17676 closed Bug (fixed)
inspectdb generates invalid field name for tables that start with a number
| Reported by: | Gandalfar | Owned by: | nobody |
|---|---|---|---|
| Component: | Core (Management commands) | Version: | dev |
| Severity: | Normal | Keywords: | inspectdb |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | yes | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Ticket #16536 introduces patch that fixes this for fields that are numbers. It turns out that some people start their table names with numbers (e.g.: '3starost') and Django doesn't like that.
This patch extends current functionality by making sure that first character of table isn't a digit:
--- a/django/core/management/commands/inspectdb.py
+++ b/django/core/management/commands/inspectdb.py
@@ -101,8 +101,8 @@ class Command(NoArgsCommand):
att_name += '_field'
comment_notes.append('Field renamed because it was a Python reserved word.')
- if att_name.isdigit():
- att_name = 'number_%d' % int(att_name)
+ if att_name[0].isdigit():
+ att_name = 'number_%s' % att_name
extra_params['db_column'] = unicode(column_name)
comment_notes.append("Field renamed because it wasn't a "
"valid Python identifier.")
Original patch didn't have a test and I'm not sure how actually test this within Django framework, but I'm happy to write one I someone can give me hint where to start, if it's required.
Attachments (1)
Change History (3)
by , 14 years ago
| Attachment: | ticket17676.diff added |
|---|
comment:1 by , 14 years ago
| Keywords: | inspectdb added |
|---|---|
| Needs tests: | set |
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 14 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
In [17509]: