Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Wagtail ModelAdmin带有列表过滤器错误:FieldDoesNotExist:区域没有名为';p';_Python_Django_Django Models_Wagtail_Django Modeladmin - Fatal编程技术网

Python Wagtail ModelAdmin带有列表过滤器错误:FieldDoesNotExist:区域没有名为';p';

Python Wagtail ModelAdmin带有列表过滤器错误:FieldDoesNotExist:区域没有名为';p';,python,django,django-models,wagtail,django-modeladmin,Python,Django,Django Models,Wagtail,Django Modeladmin,我通过Wagtail的modeladmin公开了一个模型,该模型在我尝试应用包含外键的list\u过滤器之前一直有效。我有一个名为Region的自参考模型(用于存储县、市和镇),我希望能够根据父级创建一个过滤器 我正在Django 1.10上运行Wagtail 1.8.1。模型如下: class Region(models.Model): """ Tree of regions and sub-regions. """ name = models.CharFie

我通过Wagtail的
modeladmin
公开了一个模型,该模型在我尝试应用包含外键的
list\u过滤器之前一直有效。我有一个名为Region的自参考模型(用于存储县、市和镇),我希望能够根据父级创建一个过滤器

我正在Django 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\u 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)
如果我注释掉类
RegionAdmin
中的
list\u filter
行,效果很好。文档中说它可以在列表中使用
外键
。我错过了什么明显的东西吗?堆栈跟踪如下所示:

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'

谢谢你的帮助和建议

您缺少一个逗号:

list_filter = ('parent',)
如果没有逗号,括号将被忽略,django将迭代字符串,而不是元组(因为没有元组!),因此尝试访问字段
p

从:

带有一个项的元组是通过在值后面加逗号来构造的(仅将单个值括在括号中是不够的)。丑陋,但有效


对不起,我去踢自己大约一个小时!谢谢。先生,请原谅!;-)温柔点!