django - Django:无法访问管理面板中的对象
问题描述
单击 AdminPanel 中的 Object Cart 或 CartItem 时,我得到:
模板渲染期间出错
在模板 D:\virtual_envs\stickers_gallito\lib\site-packages\django\contrib\admin\templates\admin\base.html 中,第 0 行的错误
str返回了非字符串(int 类型)
在 shell 中查询这些对象时,我得到:
>>> carts = Cart.objects.all()
>>> carts
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "D:\virtual_envs\stickers_gallito\lib\site-packages\django\db\models\query.py", line 247, in __repr__
return '<%s %r>' % (self.__class__.__name__, data)
File "D:\virtual_envs\stickers_gallito\lib\site-packages\django\db\models\base.py", line 503, in __repr__
return '<%s: %s>' % (self.__class__.__name__, self)
TypeError: __str__ returned non-string (type int)
模型.py:
class Cart(models.Model):
cart_id = models.CharField(max_length=100)
date_added = models.DateField(auto_now_add=True)
class Meta:
db_table = 'Cart'
ordering = ['date_added']
def __str__(self):
return self.id
有什么问题?
解决方案
例外是为您提供有关问题所在的线索:
TypeError:
__str__
返回非字符串(类型int
)
您已经定义了一个__str__
返回整数 ID 而不是字符串的方法,因此会返回错误。您需要将值强制为字符串:
def __str__(self):
return str(self.id)
另请注意,这self.id
是数据库中自动生成的行 ID,与self.cart_id
. 如果您使用后者来识别您的购物车,您可能希望使用后者。
推荐阅读
- sql - 如何在 PostgreSQL 中按时间间隔聚合行数?
- c# - 如何编写 C# 脚本来处理 SSIS 中 csv 字段中的双引号
- ruby - 如何在 Ruby 循环中使用 XPath 循环
- c - 通过我的函数传递单词的问题
- go - 预计不会调用查询 [...]
- windows - 为什么 JREPL.bat 会关闭我的批处理脚本?
- regex - Javascript正则表达式匹配表达式,除了另一个表达式
- fast-ai - 将变换应用于 fastai v2 视觉
- arrays - 通过将其作为函数参数传递来填充 2d 子数组
- python - 我如何知道数据并且没有相同的形状或不在 python 中使用 seaborn 命令?