2011-10-20 25 views
0

は、私は2つのモデルがあるとします。djangoでリレーションを持つフィールドをフィルタリングする変更リストを持つ方法は?

class Blog(models.Model): 
    pass 

class Article(models.Model): 
    blog = models.ForeignKey(Blog, related_name="articles") 

私が記事を持っているだけのブログをフィルタリングします。フィルタは次のようなものになります。

Blog.objects.annotate(article_count=models.Count('articles')).filter(article_count__gt=0) 

このような管理フィルタで変更リストを使用するにはどうすればよいですか? 私はcustom filterspecsのようないくつかのアプローチを試みましたが、成功しませんでした。

Multiple ModelAdmins/views for same model in Django admin

しかし、それは許可制で非常にうまく動作しません: 最善の解決策は、このソリューションのように、プロキシモデルを使用して分離した管理者リストを登録することでした。 アイデア

+0

ところで、これが最も効率的なクエリ:) – akonsu

答えて

0

これを達成するために、現在非常に苦しいハッキングを除いて、方法はありません。 Django 1.4には、カスタムfilterpecs(https://code.djangoproject.com/ticket/5833を参照してください)を作成する機能が付属していますので、このようなことをすることができます。

これは一種のエッジケースであると思われます(実際には、かなりの期間ブログがゼロになることはありますか?)私の提案は、今のところ保留にして、 1.4がリリースされました。あなたがウサギの穴を下って行くことを主張した場合

、あなたはここで起動することができます。Custom Filter in Django Admin on Django 1.3 or below

+0

おかげではありません。私のケースは実際にはブログではなく、私はこのモデルを例として使っています。私のモデルは映画祭の映画についてです。一部(約20%)のみが展示されます。それらは関連する映画番組にあります。だから私は映画祭のためにプログラムされている映画だけをフィルタリングしたいと思っています。とにかく助けてくれてありがとう。私はdjango 1.4を待つかもしれません。 – bbrik

関連する問題