Django不支持从list_display或list_filter (例如foo__bar)获取外键值。我知道您可以创建一个模块方法作为list_display的变通方法,但是我该如何为list_filter创建同样的方法呢?谢谢。
发布于 2013-12-29 05:49:56
Django支持具有外键字段的list_filter
# models.py:
class Foo(models.Model):
name = models.CharField(max_length=255)
def __unicode__(self):
return self.name
class Bar(models.Model):
name = models.CharField(max_length=255)
foo = models.ForeignKey(Foo)
# admin.py:
class BarAdmin(admin.ModelAdmin):
list_filter = ('foo__name')来自文档: list_filter中的字段名称还可以使用__查找跨越关系
发布于 2010-01-14 23:22:09
好的,文档说您可以在list_filter中使用ForeignKey字段类型
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter
举个例子:
# models.py:
class Foo(models.Model):
name = models.CharField(max_length=255)
def __unicode__(self):
return self.name
class Bar(models.Model):
name = models.CharField(max_length=255)
foo = models.ForeignKey(Foo)
# admin.py:
class BarAdmin(admin.ModelAdmin):
list_filter = ('foo')如果你想通过相关模型中的字段进行过滤,有一个补丁可以让它工作(可能会像看起来那样合并到1.2中):
发布于 2011-03-14 04:10:34
这个页面的解决方案对我很有效,http://www.hoboes.com/Mimsy/hacks/fixing-django-124s-suspiciousoperation-filtering/
定义
class SmarterModelAdmin(admin.ModelAdmin):
valid_lookups = ()
def lookup_allowed(self, lookup, *args, **kwargs):
if lookup.startswith(self.valid_lookups):
return True
return super(SmarterModelAdmin, self).lookup_allowed(lookup, *args, **kwargs)然后允许查找某些外键字段
class PageAdmin(SmarterModelAdmin):
valid_lookups = ('parent')https://stackoverflow.com/questions/2065036
复制相似问题