python - /admin/orders2/order/11/change/ 'NoneType' 对象的 AttributeError 没有属性 'username'
问题描述
我的前端一切正常,当我尝试访问管理面板中的订单时出现此问题。在我的控制台中,它还说:
cursor.close()
sqlite3.ProgrammingError: Cannot operate on a closed database.
我试图找出问题所在,但失败了。为什么这会引发错误?谁能帮我解决这个问题?提前致谢!
我的模型.py:
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
ref_code = models.CharField(max_length=20)
ordered = models.BooleanField(default=False)
def __str__(self):
return self.user.username
我的管理员.py:
class OrderAdmin(admin.ModelAdmin):
list_display = ['user', 'ordered', 'being_delivered', 'received', 'refund_requested',
'refund_granted', 'shipping_address', 'billing_address', 'payment', 'coupon']
list_filter = ['ordered', 'being_delivered', 'received', 'refund_requested', 'refund_granted']
list_display_links = ['user', 'shipping_address', 'billing_address', 'payment', 'coupon']
search_fields = ['user__username', 'ref_code']
admin.site.register(Order, OrderAdmin)
解决方案
请更改以下models.py-
从:
def __str__(self):
return self.user.username
至:
def __str__(self):
return str(self.id)
原因:最好不要将__str__
方法作为模型的外键返回。发生冲突以防万一if username is None
,然后会发生什么。
推荐阅读
- javascript - ytdl-core 出现“找不到模块”错误
- google-maps - 谷歌地图无法正常打开
- regex - 选择所有以“.”开头的连续行,最后一行除外
- python - 如何在跨度(箭头)内循环抓取数据并将其全部循环到连续页面中?
- grafana - grafana 使用基于指标的普罗米修斯查询定义变量
- sql - SQL LIKE 子句的特殊模式
- vuetify.js - Vuetify分页选择的页面不显示
- xml - SAXON 忽略源 XML 中的命名空间
- json - NotesJSONNavigator 的 64k 限制?
- asp.net - 对用户进行身份验证时,ASP.NET Core Web 应用 URL 区分大小写