从django-admin中的queryset获取属性

时间:2012-08-16 10:53:35

标签: python django django-admin

我想在django-admin中使用查询集(queryset)来获取所有对象。根据实现的查询集,我想显示查询集的某些属性以供查看。例如,我会喜欢显示此人的身份,该人的父母,该人的父母姓名,电子邮件等。

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,每个孩子的父母姓名等等...想要做一些关于这样做的指导。非常感谢任何帮助..谢谢...

1 个答案:

答案 0 :(得分:0)

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

这是正确的方法。您不必查询queryset中的所有对象。只需要通过obj。它将为所有对象运行它。还有其他方法可以做到这一点,这并不涉及到类本身。要了解更多信息,请查看list_display Django Admin。这些例子很清楚。