首页 > 解决方案 > /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)

标签: pythondjango

解决方案


请更改以下models.py-

从:

def __str__(self):
   return self.user.username

至:

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

原因:最好不要将__str__方法作为模型的外键返回。发生冲突以防万一if username is None,然后会发生什么。


推荐阅读