【问题标题】:Django upgrade from 1.2.5 to 1.3 error in admin管理员中的 Django 从 1.2.5 升级到 1.3 错误
【发布时间】:2016-10-03 20:45:04
【问题描述】:

我正在尝试将运行 django 1.2.5 的网站升级到 1.3 到目前为止,我遇到的唯一错误是在网站的管理部分:

__init__() got an unexpected keyword argument 'field_path'

我认为来自这段代码的某个地方:

class EventAdmin(admin.ModelAdmin):
    inlines = [EventArtistsInline, EventGalleryInline, EventRelatedObjectInline, EventPriceInline, SeriesPassInline, EventsInSeriesInline, ]
    save_as = True
    prepopulated_fields = {"slug": ("prefix", "title", "suffix")}
    list_filter = ('start_date', 'is_series')
    search_fields = ['title', 'description', 'intro',]

    def changelist_view(self, request, extra_context=None):
        if request.user.is_superuser:
            self.list_display_links = ['title']
            self.list_display= ['title', 'status', 'start_date', 'end_date', 'hide_artists', 'featured', 'is_series', 'tickets_sold', 'tickets_remaining', 'sold_out']
            self.list_editable = ['featured', 'status', 'hide_artists', 'is_series','sold_out',]
        else:
            self.list_display_links = ['']
            self.list_display= ['title', 'status', 'start_date', 'tickets_sold', 'tickets_remaining', 'sold_out']
            self.list_editable = ['status']
        return super(EventAdmin, self).changelist_view(request, extra_context)

    class Media:
        js = [
            settings.MEDIA_URL+'tiny_mce/tiny_mce.js',
            settings.MEDIA_URL+"filebrowser/js/TinyMCEAdmin.js",
        ]

我该如何解决这个问题?

下面的完整堆栈跟踪:

Environment:


Request Method: POST
Request URL: http://example.com/admin/events/event/

Django Version: 1.3
Python Version: 2.7.6
Installed Applications:
['grappelli',
 'admin_tools',
 'admin_tools.theming',
 'admin_tools.menu',
 'admin_tools.dashboard',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.sitemaps',
 'filebrowser',
 'galleries',
 'products',
 'django.contrib.admin',
 'django.contrib.redirects',
 'django.contrib.humanize',
 'kp.applications.seasonal_dates',
 'kp.utils',
 'people',
 'pages',
 'archive',
 'locations',
 'partners',
 'campaigns',
 'events',
 'memberships',
 'registration',
 'captcha',
 'session_cart',
 'colours',
 'order',
 'genres',
 'mamona',
 'musicshop',
 'mamona.backends.stripe',
 'django.contrib.humanize',
 'django.contrib.auth',
 'email_usernames',
 'profiles',
 'landing_pages',
 'easy_thumbnails',
 'emailmgr',
 'filebrowser']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
 'session_cart.middleware.CartMiddleware')


Traceback:
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper
  307.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  93.                     response = view_func(request, *args, **kwargs)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  79.         response = view_func(request, *args, **kwargs)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
  197.             return view(request, *args, **kwargs)
File "./events/admin.py" in changelist_view
  55.         return super(EventAdmin, self).changelist_view(request, extra_context)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
  28.             return bound_func(*args, **kwargs)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  93.                     response = view_func(request, *args, **kwargs)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
  24.                 return func(self, *args2, **kwargs2)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in changelist_view
  1056.                 self.list_select_related, self.list_per_page, self.list_editable, self)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/contrib/admin/views/main.py" in __init__
  67.         self.filter_specs, self.has_filters = self.get_filters(request)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/contrib/admin/views/main.py" in get_filters
  77.                                          field_path=filter_name)
File "/var/projects/example.com/env/local/lib/python2.7/site-packages/django/contrib/admin/filterspecs.py" in create
  39.                                field_path=field_path)

Exception Type: TypeError at /admin/events/event/
Exception Value: __init__() got an unexpected keyword argument 'field_path'

【问题讨论】:

  • 是什么让您认为错误源于该类?你有堆栈跟踪吗?
  • @jstlaurent 是的,这在回溯的中间:./events/admin.py in changelist_view return super(EventAdmin, self).changelist_view(request, extra_context)
  • 你应该已经发布了完整的堆栈跟踪。无论如何,您为什么要升级到大约 5 年前已经过时的 django 版本?
  • @e4c5 抱歉,我刚刚修改了原始帖子以包含完整的堆栈跟踪。我确实尝试在升级时跳过几个版本,但发现更多错误,所以我先尝试这个较小的升级。
  • 令人惊讶的是,您的代码都没有出现在其中。解决这类问题的通常做法是注释掉你的admin中的所有代码,然后一点一点地添加回来,看看究竟是什么导致了问题

标签: python django django-admin upgrade django-1.3


【解决方案1】:

实际上是 start_date 字段导致了问题,我在 models.py 文件中找到了一个过滤器类,并从这篇文章中获得了一些帮助:

django admin custom list_filter

感谢指点!

【讨论】:

    【解决方案2】:

    很难确切地说出这里出了什么问题。

    错误是在名为filterspecs.py 的文件中触发的。我怀疑这可能是因为您有一个列表过滤器is_series 未包含在self.list_display 中。

    尝试注释掉list_filter 行,看看是否有任何改变。

    list_filter = ('start_date', 'is_series')
    self.list_display= ['title', 'status', 'start_date', 'tickets_sold', 
                        'tickets_remaining', 'sold_out']
    

    这也可能是在更高版本的 django 中修复的一些错误。由于admin.py 文件是可选的,因此您可以在升级过程中删除或重命名它们,直到您解决了其他问题。此错误可能是由更高版本的 django 中修复的问题引起的。

    【讨论】:

    • 谢谢,删除list_filter 行修复它。更高版本的 filterspecs.py 存在很多问题,而 Django >= 1.4 中不存在这些问题。我现在必须看看如何在 1.3 中实现这个 list_filter
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2019-04-17
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多