Django TypeError:尝试访问模型时,参数必须为int或float

时间:2019-07-27 18:50:40

标签: django django-models

每次尝试访问我的模型之一时,我都会遇到一个非常奇怪的错误。所有其他模型都可以正常工作。

这是我的模型的样子:

class Hop(models.Model):
    name = models.CharField(max_length=100, null=True, blank=True)
    aa = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True, default = 10)
    b = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
    type = models.CharField(max_length=100, null=True, blank=True)
    description = models.CharField(max_length=600, null=True, blank=True)
    user_created = models.BooleanField(default=True)

    def __unicode__(self):
        return self.name

当我运行Hop.objects.all()时,出现以下错误。以前从未见过。

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\models\query.py", line 250, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\models\query.py", line 274, in __iter__
    self._fetch_all()
  File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\models\query.py", line 1242, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\models\query.py", line 72, in __iter__
    for row in compiler.results_iter(results):
  File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\models\sql\compiler.py", line 1044, in apply_converters
    value = converter(value, expression, connection)
  File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\backends\sqlite3\operations.py", line 285, in converter
    return create_decimal(value).quantize(quantize_value, context=expression.output_field.context)
TypeError: argument must be int or float

4 个答案:

答案 0 :(得分:1)

我认为您已经创建了一个模型并进行了迁移。并根据它们插入数据。 然后,您更改了模型中的规则,并尝试访问您已创建的记录之一。在这种情况下,您将得到如您所说的错误:

enter image description here

答案是,您需要使用新的模型规则更新数据

*很高兴得知您已解决问题。

答案 1 :(得分:1)

只需删除该应用程序的迁移文件夹(接受__init__.py)中的所有文件,然后删除db.sqlite3。然后再次进行迁移,并在迁移后再次创建超级用户。

对我有用。

答案 2 :(得分:0)

不确定发生了什么,但是导出数据并重新导入解决了该错误。在AA或B列中必须是无效字符。

答案 3 :(得分:0)

尝试运行此命令:

python manage.py migrate --run-syncdb

它帮助了我。