2

関連オブジェクトのフィールドでdjangoadminのリストフィルターを使用しています。

class A(models.Model):
   #..
   pass
class B(models.Model):
   fk = models.ForeignKey(A)
   val models.CharField(max_length=1)

の管理者で、をオンにAしようとしていますが、結果は、フィルター値を満たすそれぞれについて重複したリストになっています。list_filterB__valAB

クエリ結果をインターセプトして重複を削除する簡単な方法はありますか?

4

1 に答える 1

2

管理ソースは実際に を追加しようとし.distinct()ますが、何らかの理由でこれを見逃しています (バグに違いない?)。

私が探している動作は次のとおりです。

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 ]
于 2012-05-19T17:08:46.833 に答える