【问题标题】:Django: IndexError at /admin/auth/user/ list index out of rangeDjango:/admin/auth/user/ 列表索引超出范围的 IndexError
【发布时间】:2016-11-08 03:32:23
【问题描述】:

我有 2 个模型:customers(包含 user = m.ForeignKey(User, related_name="customers"))和 UserAdmin(类 UserAdmin(NestedModelAdmin, DjangoUserAdmin))。我想添加到用户字段,它为每个用户生成订单链接:在 app/models.py 我写了这段代码:

def orders_url(self):
return format_html(u"<a href='/admin/order/order/?q={0}'>Orders</a>", self.user.first_name)

在 app/admin/user_admin.py 我有这个代码:

from myproject.customer.models import Customer
def orders_url(self, user):
    customer = user.customers.all()[0]
    return customer.orders_url()

当我尝试搜索某个用户(例如 /admin/auth/user/?q=Nick)时,一切正常,它会生成指向 Nick 订单的链接,但是当我进入 /admin/auth/user/ ,我看到这个错误:IndexError at /admin/auth/user/ 列表索引超出范围。 回溯链接到下一个代码:

path_to_project/customer/admin/user_admin.py in orders_url
                customer = user.customers.all()[0] 
▼ Local vars
Variable    Value
self       <myproject.customer.admin.user_admin.UserAdmin object at 0xa7e788c>
user       <User: >

忘记了那条消息:

Error during template rendering
In template /home/vagrant/venv/local/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list.html, error at line 91
list index out of range
91 {% result_list cl %}

我怎样才能改变它?

【问题讨论】:

  • 您正在使用的用户对象没有任何客户
  • 我看到即使用户是空的,但我不知道这个用户以及我可以在哪里添加用户给他。

标签: django python-2.7 django-admin


【解决方案1】:

通过更改 user_admin.py 文件中的最后一行来解决问题:

def orders_url(self, user):
    customers = user.customers.all()
    return format_html(', '.join([customer.orders_url() for customer in customers]))

现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2011-10-31
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多