2012-08-16 79 views
0

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

在Django文档中提供的例子是:

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,每个孩子的家长的名字等进一步的行动...想要去这样做this.Would真的很感谢有这方面的帮助,一些指导...谢谢...

+1

django admin已经在'change_list'视图(即/ admin/app/model /)中显示了属性。要更改每行显示哪些属性,只需使用['list_display'](https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display) – 2012-08-16 11:08:45

+0

我有的模型是通过ForeignKey与其他模型(如父)相关联,所以我需要从其他模型中获取数据并显示它..例如\t def Parent_First_Name(self): \t \t 012 = = student.relationships.filter role = StudentAdultRelationship.PARENT)[0] .adult return'%s'%adult.profile.firstname Parent_First_Name.short_description ='Parent First Name' – lakesh 2012-08-16 12:11:52

+0

我想将其添加到queryset中的每个项目。 – lakesh 2012-08-16 12:15:08

回答

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。这些例子非常清楚。