2017-02-01 3 views
2

ForeignKeyを含むlist_filterを適用しようとするまでWagtailのmodeladminで公開されているモデルがあります。私はParentレベルでフィルタを作成できるようにする、地域と呼ばれる自己参照モデル(郡、都市、および町を格納する)を持っています。Wagtail ModelAdmin with list_filterエラー:FieldDoesNotExist:Regionに 'p'という名前のフィールドがありません

私はDagango 1.10でWagtail 1.8.1を実行しています。こちらのモデルです:

class Region(models.Model): 
    """ 
    Tree of regions and sub-regions. 
    """ 

    name = models.CharField(max_length=255) 
    parent = models.ForeignKey(
     'Region', 
     blank=True, 
     null=True, 
    ) 

    class Meta: 
     unique_together = ('name', 'parent') 

    def __str__(self): 
     return '{0}'.format(
      self.name, 
     ) 

そしてwagtail_hooks.pyからModelAdmin

class RegionAdmin(ModelAdmin): 
    model = Region 
    menu_icon = 'doc-full-inverse' 
    empty_value_display = 'ROOT' 
    list_display = ('parent', 'name') 
    list_filter = ('parent') 


modeladmin_register(RegionAdmin) 

私はクラスRegionAdminlist_filter行をコメントアウトする場合、それは正常に動作します。ドキュメントには、リストにForeignKeyが入ると書かれています。私は明白な何かを欠いていますかスタックトレースは

Traceback (most recent call last): 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner 
    response = get_response(request) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/views/decorators/cache.py", line 43, in _cache_controlled 
    response = viewfunc(request, *args, **kw) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/wagtail/wagtailadmin/decorators.py", line 24, in decorated_view 
    return view_func(request, *args, **kwargs) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/wagtail/contrib/modeladmin/options.py", line 350, in index_view 
    return view_class.as_view(**kwargs)(request) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/views/generic/base.py", line 68, in view 
    return self.dispatch(request, *args, **kwargs) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/utils/decorators.py", line 67, in _wrapper 
    return bound_func(*args, **kwargs) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view 
    return view_func(request, *args, **kwargs) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/utils/decorators.py", line 63, in bound_func 
    return func.__get__(self, type(self))(*args2, **kwargs2) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/wagtail/contrib/modeladmin/views.py", line 249, in dispatch 
    self.queryset = self.get_queryset(request) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/wagtail/contrib/modeladmin/views.py", line 554, in get_queryset 
    filters_use_distinct) = self.get_filters(request) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/wagtail/contrib/modeladmin/views.py", line 381, in get_filters 
    field_path)[-1] 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/contrib/admin/utils.py", line 485, in get_fields_from_path 
    fields.append(parent._meta.get_field(piece)) 
    File "/home/vagrant/.virtualenvs/sepia/lib/python3.5/site-packages/django/db/models/options.py", line 619, in get_field 
    raise FieldDoesNotExist('%s has no field named %r' % (self.object_name, field_name)) 
django.core.exceptions.FieldDoesNotExist: Region has no field named 'p' 

ありがとうございました!

答えて

3

あなたがコンマ不足している:(なしタプルがないので!)カンマなし

list_filter = ('parent',) 

を、括弧はタプルを無視され、Djangoは、文字列を反復され、ではない、とそれゆえの試みアクセスフィールドpdocsから

a tuple with one item is constructed by following a value with a comma (it is not sufficient to enclose a single value in parentheses). Ugly, but effective.

+0

私は一時間ほど自分を蹴りに行く間、すみません!ありがとうございました。 – FlipperPA

+1

申し訳ありません、サー! ;-) 穏やかな! – schwobaseggl

関連する問題