我在django admin中对相关对象中的字段使用列表过滤器。
class A(models.Model):
#..
pass
class B(models.Model):
fk = models.ForeignKey(A)
val models.CharField(max_length=1)
在A
的管理员中,我正在list_filter
上B__val
,但结果是为每个A
列出的重复B
满足过滤值。
是否有一种简单的方法来拦截查询结果以删除重复项?
答案 0 :(得分:2)
管理源确实尝试添加.distinct()
,但由于某种原因错过了它(必定是个bug?)。
我通过以下方式获得了我正在寻找的行为:
class NoDuplicates(ChangeList):
def __init__(self, *args):
super(NoDuplicates,self).__init__(*args)
def get_query_set(self):
return super(NoDuplicates,self).get_query_set().distinct()
class AAdmin(admin.ModelAdmin):
def get_changelist(self, request, **kwargs):
return NoDuplicates
list_filter = [ B__val ]