【发布时间】:2021-03-01 10:25:40
【问题描述】:
我有一个项目,其中主列名称是“N”而不是标准“id”。我无法访问原始数据库来更改它,所以我希望以下代码可以解决问题:
class ExSLoc(models.Model):
id = models.IntegerField(primary_key=True, db_column='n')
class Meta:
db_table = original_db_table
managed = False
确实如此,但我在 Django 模型表单中遇到了一个奇怪的错误,告诉我:
'ExSLoc' object has no attribute 'id'
这是完整的回溯。
| Traceback (most recent call last):
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 174, in get_response
website_1 | response = self.process_exception_by_middleware(e, request)
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 172, in get_response
website_1 | response = response.render()
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/template/response.py", line 160, in render
website_1 | self.content = self.rendered_content
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/template/response.py", line 137, in rendered_content
website_1 | content = template.render(context, self._request)
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/template/backends/jinja2.py", line 70, in render
website_1 | return self.template.render(context)
website_1 | File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 1090, in render
website_1 | self.environment.handle_exception()
website_1 | File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 832, in handle_exception
website_1 | reraise(*rewrite_traceback_stack(source=source))
website_1 | File "/opt/project/templates/rfs_submission/rfs_new_0.html", line 1, in top-level template code
website_1 | {% extends "rfs_submission/rfs_new.html" %}
website_1 | File "/opt/project/templates/rfs_submission/rfs_new.html", line 9, in top-level template code
website_1 | {% if rfs.rfstype_id == 'RFSTTR' and step == 1 %}
website_1 | File "/opt/project/templates/layout_modern.html", line 40, in top-level template code
website_1 | {% block body %}
website_1 | File "/opt/project/templates/rfs_submission/rfs_new.html", line 65, in block "body"
website_1 | {% block form %}{% endblock %}
website_1 | File "/opt/project/templates/rfs_submission/rfs_new_0.html", line 4, in block "form"
website_1 | {% set field=form.loc %}{% include "partials/form_input_tr.html" %}
website_1 | File "/opt/project/templates/partials/form_input_tr.html", line 8, in top-level template code
website_1 | {{ field }}
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/utils/html.py", line 381, in <lambda>
website_1 | klass.__unicode__ = lambda self: mark_safe(klass_unicode(self))
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/forms/boundfield.py", line 43, in __str__
website_1 | return self.as_widget()
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/forms/boundfield.py", line 101, in as_widget
website_1 | return force_text(widget.render(name, self.value(), attrs=attrs))
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/forms/boundfield.py", line 148, in value
website_1 | return self.field.prepare_value(data)
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py", line 1204, in prepare_value
website_1 | return value.pk
website_1 | File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 536, in _get_pk_val
website_1 | return getattr(self, meta.pk.attname)
website_1 | AttributeError: 'ExSLoc' object has no attribute 'id'
【问题讨论】:
标签: django django-forms django-orm