Django:无法在管理面板中访问对象

时间:2019-02-03 03:12:42

标签: django

当点击我发现了AdminPanel对象车或CartItem:

  

模板渲染期间发生错误

     

在模板d:\ virtual_envs \ stickers_gallito \ lib中\站点包\ django的\的contrib \管理员\模板\管理员\ 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)

models.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

有什么问题吗?

1 个答案:

答案 0 :(得分:2)

该异常为您提供了有关问题所在的线索:

  

TypeError:__str__返回了非字符串(类型int

您已经定义了一个__str__方法,该方法返回整数ID,而不是字符串,因此返回错误。您需要将值强制转换为字符串:

def __str__(self):
    return str(self.id)

还请注意,self.id是在数据库中的自动生成的行ID,并从不同的self.cart_id。你可能想用后者代替,如果这是你用什么来识别你的车。