【问题标题】:TypeError: argument must be int or float in Django 3.0TypeError:在 Django 3.0 中,参数必须是 int 或 float
【发布时间】:2022-01-03 13:32:41
【问题描述】:

我想我在尝试打印 item_name 时遇到了这个错误

让我们考虑一下我的 models.py

class Wastage(models.Model):
    client = models.ForeignKey(Client,on_delete=models.CASCADE)
    date = models.DateField(auto_now_add=True)
    item_name = models.ForeignKey(Items,on_delete=models.CASCADE)


class Items(models.Model):
    item_name = models.CharField(max_length=512)
    def __str__(self):
       return self.item_name

这是我的意见.py

class WastageView(ListView):
    template_name = 'wastage_list.django.html'
    model = Wastage
    context_object_name = "stock_wastage"
    def get_context_data(self, **kwargs):
        context = super(WastageView, self).get_context_data(**kwargs)
        context["faulty_reasons"] = FaultyReason.objects.filter(client=self.request.user.client,is_deleted=False)
        return context

    def get_queryset(self):
        user = self.request.user
        client = user.client
        query = self.request.GET.get('query')
        if query:
            return self.model.objects.filter(client=client, name__icontains=query).order_by('-date')
        return self.model.objects.filter(client=client).order_by('-date')

现在让我们考虑我的模板wastage_list.django.html

{% for item in stock_wastage %}
     <tr>
        <td>{{ item.date|date }}</td>
        <td>{{ item.item_name }} </td>
     </tr>
{% endfor %}

我的问题在于 item_name

这是我的数据库记录的示例

id     client_id       date           item_name_id

1        3           2021-06-24           103

2        3           2021-11-23           21

3        3           2022-01-02           53

这是我的错误回溯

Traceback(最近一次调用最后一次): get 中的文件“/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py”,第 172 行 rel_obj = self.field.get_cached_value(实例) 文件“/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/fields/mixins.py”,第 13 行,在 get_cached_value 返回 instance._state.fields_cache[cache_name] KeyError:'item_name'

在处理上述异常的过程中,又发生了一个异常:

Traceback (most recent call last):
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/core/handlers/base.py", line 145, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/core/handlers/base.py", line 143, in _get_response
    response = response.render()
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/response.py", line 105, in render
    self.content = self.rendered_content
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/response.py", line 83, in rendered_content
    return template.render(context, self._request)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/classytags/core.py", line 154, in render
    return self.render_tag(context, **kwargs)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/sekizai/templatetags/sekizai_tags.py", line 88, in render_tag
    rendered_contents = nodelist.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/classytags/core.py", line 154, in render
    return self.render_tag(context, **kwargs)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/sekizai/templatetags/sekizai_tags.py", line 88, in render_tag
    rendered_contents = nodelist.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/classytags/core.py", line 154, in render
    return self.render_tag(context, **kwargs)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/sekizai/templatetags/sekizai_tags.py", line 88, in render_tag
    rendered_contents = nodelist.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/defaulttags.py", line 309, in render
    return nodelist.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/defaulttags.py", line 209, in render
    nodelist.append(node.render_annotated(context))
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 986, in render
    output = self.filter_expression.resolve(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 670, in resolve
    obj = self.var.resolve(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 795, in resolve
    value = self._resolve_lookup(context)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/template/base.py", line 836, in _resolve_lookup
    current = getattr(current, bit)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 186, in __get__
    rel_obj = self.get_object(instance)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 153, in get_object
    return qs.get(self.field.get_reverse_related_filter(instance))
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/query.py", line 411, in get
    num = len(clone)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/query.py", line 258, in __len__
    self._fetch_all()
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/query.py", line 1261, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/query.py", line 74, in __iter__
    for row in compiler.results_iter(results):
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1081, in apply_converters
    value = converter(value, expression, connection)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/db/backends/sqlite3/operations.py", line 286, in converter
    return create_decimal(value).quantize(quantize_value, context=expression.output_field.context)
TypeError: argument must be int or float

请帮我显示item_name

【问题讨论】:

  • 这里的Items 是什么? Wastage 似乎对 Items 不是 JobItems 有一个 FK?
  • 我已经编辑了我的代码,请检查
  • 确实生成了 hat?该页面是否包含循环中的任何&lt;tr&gt;s?
  • 请看看我的错误回溯我已经编辑了我的问题
  • @VEERABABU 你试过这个吗:&lt;td&gt;{{ item.item_name.item_name }} &lt;/td&gt;

标签: python django django-models django-views django-templates


【解决方案1】:

大多数“KeyError”是由于不存在的变量或实例而发生的。在您的情况下,我认为您应该调用“item_name_id”而不是“item_name”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2014-02-26
    • 2016-02-20
    • 2023-02-18
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多