django-models - Django ValueError: int() 以 10 为底的无效文字显示字符串字段内容而不是使用 ID 值
问题描述
请帮忙,我不断收到这个没有意义的 ValueError 。
系统:PostGres DB 上的 Django 2.2(带有夹层)。
在我的模型中,我有一个外键字段:
class Keyword(models.Model):
site = models.ForeignKey(Site, related_name='sitekeywords', on_delete=models.CASCADE)
keyword = models.CharField("Keyword", max_length=64)
def __str__(self):
return "%s" % (self.keyword)
class Meta:
verbose_name_plural = "Keywords"
注意:关键字 CharField 不需要是唯一的。
Keyword 模型上的 ID 由 Django 创建和管理。此关键字模型与具有显式 ID 字段的站点模型相关:
id = models.AutoField("ID", blank=False, primary_key=True)
。
当我在 Admin 中尝试编辑一个站点(将关键字编辑作为内联)时,有时会收到一个 ValueError 显示:
invalid literal for int() with base 10: 'Neoproterozoic'
...但是“新元古代”是一个关键字关键字,代码应该使用关键字 ID,所以我很困惑。请注意,这只是一个示例,错误中的字符串可以是关系中的任何关键字关键字字符串。
这是来自 forms.py 的内联表单:
class KeywordAdminForm(fforms.ModelForm):
class Meta:
model = Keyword
fields = ['keyword']
class KeywordInlineAdminForm(KeywordAdminForm):
pass
错误说当管理表单生成 fieldset.html 时发生:
Error during template rendering
In template /d/app/venv/lib64/python3.6/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html, error at line 19
9 {% for field in line %}
10 <div{% if not line.fields|length_is:'1' %} class="fieldBox{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
11 {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
12 {% if field.is_checkbox %}
13 {{ field.field }}{{ field.label_tag }}
14 {% else %}
15 {{ field.label_tag }}
16 {% if field.is_readonly %}
17 <div class="readonly">{{ field.contents }}</div>
18 {% else %}
19 {{ field.field }}
20 {% endif %}
21 {% endif %}
22 {% if field.field.help_text %}
23 <div class="help">{{ field.field.help_text|safe }}</div>
24 {% endif %}
25 </div>
26 {% endfor %}
27 </div>
28 {% endfor %}
29 </fieldset>
堆栈跟踪如下:
Environment:
Request Method: GET
Request URL: http://ausgeol-dev.utas.edu.au/admin/ausgeolapp/site/4456/change/
Django Version: 2.2.16
Python Version: 3.6.8
Installed Applications:
('mezzanine.boot',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.redirects',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.sitemaps',
'django.contrib.gis',
'django.contrib.messages',
'dal',
'dal_select2',
'webapp',
'ausgeolapp',
'debug_toolbar',
'bootstrap',
'bootstrap4',
'bootstrap_datepicker_plus',
'jquery',
'vital_theme',
'vital_themeVT',
'mezzanine.conf',
'mezzanine.core',
'mezzanine.generic',
'mezzanine.pages',
'mezzanine.blog',
'mezzanine.forms',
'mezzanine.galleries',
'mezzanine.twitter',
'mezzanine.accounts',
'djgeojson',
'leaflet',
'django_tables2',
'django_filters',
'rest_framework',
'floppyforms',
'colorfield',
'compressor',
'filebrowser_safe',
'grappelli_safe',
'django.contrib.admin',
'django.contrib.staticfiles',
'django_comments')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'mezzanine.core.request.CurrentRequestMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'mezzanine.core.middleware.RedirectFallbackMiddleware',
'mezzanine.core.middleware.AdminLoginInterfaceSelectorMiddleware',
'mezzanine.core.middleware.SitePermissionMiddleware',
'mezzanine.pages.middleware.PageMiddleware')
Template error:
In template /d/app/venv/lib64/python3.6/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html, error at line 19
invalid literal for int() with base 10: 'Neoproterozoic'
9 : {% for field in line %}
10 : <div{% if not line.fields|length_is:'1' %} class="fieldBox{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
11 : {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
12 : {% if field.is_checkbox %}
13 : {{ field.field }}{{ field.label_tag }}
14 : {% else %}
15 : {{ field.label_tag }}
16 : {% if field.is_readonly %}
17 : <div class="readonly">{{ field.contents }}</div>
18 : {% else %}
19 : {{ field.field }}
20 : {% endif %}
21 : {% endif %}
22 : {% if field.field.help_text %}
23 : <div class="help">{{ field.field.help_text|safe }}</div>
24 : {% endif %}
25 : </div>
26 : {% endfor %}
27 : </div>
28 : {% endfor %}
29 : </fieldset>
Traceback:
File "/d/app/venv/lib64/python3.6/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/d/app/venv/lib64/python3.6/site-packages/django/core/handlers/base.py" in _get_response
145. response = self.process_exception_by_middleware(e, request)
File "/d/app/venv/lib64/python3.6/site-packages/django/core/handlers/base.py" in _get_response
143. response = response.render()
File "/d/app/venv/lib64/python3.6/site-packages/django/template/response.py" in render
106. self.content = self.rendered_content
File "/d/app/venv/lib64/python3.6/site-packages/django/template/response.py" in rendered_content
83. content = template.render(context, self._request)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/backends/django.py" in render
61. return self.template.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
171. return self._render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/test/utils.py" in instrumented_test_render
96. return self.nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/loader_tags.py" in render
150. return compiled_parent._render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/test/utils.py" in instrumented_test_render
96. return self.nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/loader_tags.py" in render
150. return compiled_parent._render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/test/utils.py" in instrumented_test_render
96. return self.nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/loader_tags.py" in render
150. return compiled_parent._render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/test/utils.py" in instrumented_test_render
96. return self.nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/loader_tags.py" in render
188. return template.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
173. return self._render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/test/utils.py" in instrumented_test_render
96. return self.nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/loader_tags.py" in render
188. return template.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
173. return self._render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/test/utils.py" in instrumented_test_render
96. return self.nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/defaulttags.py" in render
309. return nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/defaulttags.py" in render
309. return nodelist.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render
993. return render_value_in_context(output, context)
File "/d/app/venv/lib64/python3.6/site-packages/django/template/base.py" in render_value_in_context
972. value = str(value)
File "/d/app/venv/lib64/python3.6/site-packages/django/utils/html.py" in <lambda>
388. klass.__str__ = lambda self: mark_safe(klass_str(self))
File "/d/app/venv/lib64/python3.6/site-packages/django/forms/boundfield.py" in __str__
33. return self.as_widget()
File "/d/app/venv/lib64/python3.6/site-packages/django/forms/boundfield.py" in as_widget
93. renderer=self.form.renderer,
File "/d/app/venv/lib64/python3.6/site-packages/dal/widgets.py" in render
151. widget = super(WidgetMixin, self).render(name, value, attrs, **kwargs)
File "/d/app/venv/lib64/python3.6/site-packages/django/forms/widgets.py" in render
241. context = self.get_context(name, value, attrs)
File "/d/app/venv/lib64/python3.6/site-packages/django/forms/widgets.py" in get_context
678. context = super().get_context(name, value, attrs)
File "/d/app/venv/lib64/python3.6/site-packages/django/forms/widgets.py" in get_context
639. context['widget']['optgroups'] = self.optgroups(name, context['widget']['value'], attrs)
File "/d/app/venv/lib64/python3.6/site-packages/dal/widgets.py" in optgroups
141. self.filter_choices_to_render(selected_choices)
File "/d/app/venv/lib64/python3.6/site-packages/dal/widgets.py" in filter_choices_to_render
188. pk__in=[c for c in selected_choices if c]
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/query.py" in filter
892. return self._filter_or_exclude(False, *args, **kwargs)
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/query.py" in _filter_or_exclude
910. clone.query.add_q(Q(*args, **kwargs))
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/sql/query.py" in add_q
1290. clause, _ = self._add_q(q_object, self.used_aliases)
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/sql/query.py" in _add_q
1318. split_subq=split_subq, simple_col=simple_col,
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/sql/query.py" in build_filter
1251. condition = self.build_lookup(lookups, col, value)
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/sql/query.py" in build_lookup
1116. lookup = lookup_class(lhs, rhs)
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/lookups.py" in __init__
20. self.rhs = self.get_prep_lookup()
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/lookups.py" in get_prep_lookup
210. rhs_value = self.lhs.output_field.get_prep_value(rhs_value)
File "/d/app/venv/lib64/python3.6/site-packages/django/db/models/fields/__init__.py" in get_prep_value
972. return int(value)
Exception Type: ValueError at /admin/ausgeolapp/site/4456/change/
Exception Value: invalid literal for int() with base 10: 'Neoproterozoic'
解决方案
推荐阅读
- google-bigquery - BigQuery 如何处理数据?
- python - 如何根据用户名的唯一性对用户名进行排名?
- javascript - 在 php 或 javascript 中将参数添加到 url 后,如何修复刷新页面?
- javascript - 在 es6 中查找我的树级宽度算法中的错误
- pine-script - 进入策略后如何保存价值作为条件?
- angular6 - Angular 6 路由器插座显示问题
- python - 使用 cv::line 提取关键点坐标并绘制线条
- swift - 委托在类中调用后返回 nil
- javascript - getByClassnameHierarchy 实现的问题
- python - 检查 div 类是否存在返回错误