0

管理ビューのプロキシモデルを定義しようとしていますが、特定の量の外部キー値を持つオブジェクトのみが表示されます。

これは私が試していることですが、yVotesでフィルタリングすることはできません。

class Post(models.Model):
    title = models.CharField(max_length=512)

class PostVote(models.Model):
    post = models.ForeignKey(Post)
    vote = models.CharField(max_length=1)

class VotedPost(models.Post):
    def _yVotes(self):
        return models.PostVote.objects.filter(post=self, vote='Y').count()
    yVotes = property(_yVotes)
    class Meta:
        proxy = True 

class VotedPostAdmin(PostAdmin):
    list_display = ('title', 'yVotes')
    def queryset(self, request):
        return self.model.objects.filter(yVotes__gt=0)

したがって、VotedPostの/ adminページを参照すると、最終結果は0'Y'を超える投票のみが表示されます。VotedPostAdminでクエリセットをコメントアウトすると、yVotesの適切な値がlist_displayに表示されます。

前もって感謝します!

4

2 に答える 2

2

これが、私が必要な結果を得るためにこれまでに得た解決策です。誰かがよりエレガントな解決策を持っているなら、私は受け入れるのを待ちます:

class VotedPostAdmin(PostAdmin):
    list_display = ('title', 'yVotes')
    def queryset(self, request):        
    return VotedPost.objects.all().annotate(count = Count('postvote')).order_by('-count').filter(count__gt=0).filter(postvote__vote='Y')
于 2012-07-13T21:03:22.297 に答える
1

get_querysetを上書きするか、管理フィルターを使用してそのような表示を作成してみませんか。あなたがやろうとしていることは、過度に複雑なtbhのようです

class PostAdmin(admin.ModelAdmin):
    def queryset(self, request):
        qs = super(ThisAdmin, self).queryset(request)
        # do stuff and return whatever
于 2012-07-13T15:56:41.100 に答える