django
  • python-2.7
  • django-admin
  • 2016-07-06 7 views 0 likes 
    0

    私は2つのモデルを持っています:顧客(ユーザー= m.ForeignKey(User、related_name = "customers"))とUserAdmin(クラスUserAdmin(NestedModelAdmin 、DjangoUserAdmin))。 Django:IndexError/admin/auth/user/list indexの範囲外

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

    アプリ/管理/ user_admin.pyで

    私はこのコードを持っている:私はこのコードを書いたアプリ/ models.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 /ユーザー/、このエラーが表示されます。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 %} 
    

    を、私はそれを変更できますか?

    +1

    あなたと一緒に作業しているユーザーオブジェクトには顧客がいません – Sayse

    +0

    私もこのユーザーが空であることがわかりますが、このユーザーとユーザーをどこに追加できるのか分かりません。 –

    答えて

    0

    問題user_admin.pyファイルorders_url方法で最後の行を変更することで解決した。

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

    は今、すべてのものが正常に動作します。

    関連する問題