Opened 13 years ago
Closed 13 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 , 13 years ago
Attachment: | ticket17676.diff added |
---|
comment:1 by , 13 years ago
Keywords: | inspectdb added |
---|---|
Needs tests: | set |
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
In [17509]: