0

すべてのオブジェクトを取得するために、django-admin でqueryset( queryset)を使用したいと思います。達成されたクエリセットに基づいて、表示用にクエリセットの特定の属性を表示したいと思います。たとえば、人のID、親、親の名前、電子メールなどを表示したいと思います。

Django docs で提供されている例は次のとおりです。

class MyModelAdmin(admin.ModelAdmin):
    def queryset(self, request):
        qs = super(MyModelAdmin, self).queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(author=request.user)

これは絶対に改善したいです。

私はこのようなことを試しました:

class ChildParentAdmin(admin.ModelAdmin):
    list_display = ('displayname', 'StudentID',)
    search_fields = ['displayname',]

    def queryset(self, request):
        qs = super(MyModelAdmin, self).queryset(request)
    def StudentID(self,queryset):
        for student in queryset:
            return student.pk

クエリセットをどのように使用し、各子のID、各子の親の名前などを取得するなどの追加のアクションを実行する方法にこだわっている点...これを行うためのガイダンスが欲しい.これについて助けてください..ありがとう...

4

1 に答える 1

0
def StudentID(self, obj):
  return '%s' % obj.pk
StudentID.short_description = 'StudentID'
def Student_Name(self, obj):
    return '%s' % obj.name

これが正しい方法です。クエリセット内のすべてのオブジェクトに対してクエリを実行する必要はありません。obj を渡すだけです。すべてのオブジェクトに対して実行されます。これを行うには、クラス自体を使用しない他の方法があります。これについて詳しくは、list_display Django Adminを参照してください。例は非常に明確です。

于 2012-08-27T07:02:11.173 に答える