Django ValueError:以 10 为基数的 int() 的无效文字显示字符串字段内容而不是使用 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)

当我在管理员中尝试编辑一个站点(将关键字编辑作为内联)时,我有时会收到一个 ValueError 显示invalid literal for int() with base 10: 'Neoproterozoic' ... 但是“新元古代”是一个keyword_keyword,代码应该使用keyword_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,attrs)

File "/d/app/venv/lib64/python3.6/site-packages/django/forms/widgets.py" in get_context
  678.         context = super().get_context(name,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'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)