每次尝试访问我的模型之一时,我都会遇到一个非常奇怪的错误。所有其他模型都可以正常工作。
这是我的模型的样子:
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
答案 0 :(得分:1)
我认为您已经创建了一个模型并进行了迁移。并根据它们插入数据。 然后,您更改了模型中的规则,并尝试访问您已创建的记录之一。在这种情况下,您将得到如您所说的错误:
答案是,您需要使用新的模型规则更新数据
*很高兴得知您已解决问题。
答案 1 :(得分:1)
只需删除该应用程序的迁移文件夹(接受__init__.py
)中的所有文件,然后删除db.sqlite3
。然后再次进行迁移,并在迁移后再次创建超级用户。
对我有用。
答案 2 :(得分:0)
不确定发生了什么,但是导出数据并重新导入解决了该错误。在AA或B列中必须是无效字符。
答案 3 :(得分:0)
尝试运行此命令:
python manage.py migrate --run-syncdb
它帮助了我。