4

私は次のようなモデルを持っています:

class MyModel(models.Model):
  user = models.ForeignKey(User)
  field1 = models.CharField(max_length=100, db_index=True, null=False, blank=False)
  field2 = models.CharField(max_length=100)

もちろん、次のようなリストとして表示されます。

user1 | field1 | field2
user1 | field1 | field2
user2 | field1 | field2
user2 | field1 | field2

私はそれを次のように示したいと思います:

user1 | field1_count() | field2_count()
user2 | field1_count() | field2_count()

ユーザーの field1_count() と field2_count() を計算する方法は知っていますが、ユーザーごとに 1 行のみを保持するにはどうすればよいですか?

4

1 に答える 1

5

list_display属性を使用して、管理者のリスト変更ページに表示されるフィールドを定義できます。

class MyAdmin(admin.ModelAdmin):
    list_display = ('username', 'field1_count', 'field2_count')

    def field1_count(self, obj):
        # count field1
        return c

    def field2_count(self, obj):
        # count field2
        return c

 admin.site.register(User, MyAdmin)

これにより、変更リスト ページの行ごとに少なくとも 2 つのクエリが作成されることに注意してください。これは、問題になる場合とそうでない場合があります。

または、 ModelAdmin.querysetまたはModelAdmin.changelist_viewのいずれかを上書きしてみてください。

于 2012-07-19T14:18:13.777 に答える