Django报错'type object Review has no attribute object'的解决方法咨询
解决
type object 'Review' has no attribute 'object' 错误 这个错误是个典型的拼写小失误——Django模型的默认数据管理器是复数形式的objects,而你写成了单数的object。咱们直接修正这个问题,同时还要处理几个潜在的坑:
1. 修正管理器名称拼写
把views.py里的创建对象代码:
new_order = Review.object.create( reviewText = userInfo, votes = userAddr )
改成:
new_order = Review.objects.create( item=item, # 必须给ForeignKey字段赋值,否则会触发数据库完整性错误 reviewText = userInfo, votes = userAddr )
2. 补充必填的外键字段
你的Review模型里item是ForeignKey类型,默认是必填项(blank=False, null=False),所以创建Review实例时必须传入对应的Item对象——刚好你的视图里已经通过get_object_or_404获取了item,直接加上item=item即可,不然会报错说外键字段不能为空。
额外优化提示
- 你的
votes字段定义为models.CharField(max_length=100),但用来存储用户地址的话,100字符大概率不够用,建议改成models.TextField()或者把max_length调至255以上。 - 模型里的字段命名可以更贴合Python规范,比如把
reviewText改成review_text、votes改成shipping_address,这样代码可读性会更高,也避免和内置方法/属性冲突。
内容的提问来源于stack exchange,提问作者박제현
相关产品推荐
相关产品推荐

