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