【问题标题】:Django models in admin return TypeError: bad operand type for unary -: 'str'管理员中的 Django 模型返回 TypeError:一元的错误操作数类型 -:'str'
【发布时间】:2021-04-18 10:49:46
【问题描述】:

我正在使用 Django(3) 和 Python(3) 开发一个项目,其中我添加了一些模型并将这些模型添加到 admin.py,但是当我打开管理面板并尝试为它返回错误的那些模型。

这是我的一个返回错误的模型:

来自models.py

class CurrencyManagementAssetsModel(models.Model):
    RequestId = models.IntegerField(blank=False)
    CbnInstitutionCode = models.CharField(max_length=5, blank=False)
    SortCode = models.CharField(max_length=10, blank=False)
    Count = models.IntegerField(blank=False)
    AssetClassificationId = models.IntegerField(blank=False)
    AssetTypeId = models.IntegerField(blank=False)
    ValueOfCurrencyDistributed = models.DecimalField(max_digits='20', decimal_places='10', 
    blank=False)
    VaultCapacity = models.DecimalField(max_digits='20', decimal_places='10', blank=False)
    Year = models.IntegerField(blank=False)
    HalfOftheYear = models.IntegerField(blank=False)

    class Meta:
        verbose_name = 'Currency Management Assets'

来自admin.py

from django.contrib import admin
from .models import CurrencyManagementAssetsModel

admin.site.register(CurrencyManagementAssetsModel)

这是我在管理员中单击该特定模型时遇到的错误:

请求方法:GET 请求网址:http://127.0.0.1:8000/admin/reports/currencymanagementassetsmodel/ Django 版本:3.1.3 异常类型:TypeError 异常值:一元操作数类型错误 -: 'str'

这里有什么问题?

【问题讨论】:

  • 你能告诉我们try to add an object的代码吗?该错误看起来像您正在尝试将负号(一元 -)应用于字符串而不是数字!
  • 由于您在尝试与管理员合作时遇到错误,也可能是问题出在定义此模型管理员的admin.py
  • @abdul Rehman,请分享admin.py 文件。
  • @IqbalHussain 添加了admin.py

标签: python python-3.x django django-models


【解决方案1】:

Django 自动将空值插入到具有blank =True 的字段中。因此,要更正您的错误,请在该字段中指定 null=True,因为该字段是整数字段而不是字符字段。请抱歉我犯了一个错误,请从您的模型字段中删除空白 = false,因为空白 PARAM 默认为 false。

【讨论】:

  • 但是我的model 没有blank=True 的任何字段
猜你喜欢
  • 2021-01-15
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多