微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Count 字段传递给导出字段

如何解决如何将 Count 字段传递给导出字段

我正在处理导出资源,但我不知道如何从视图中将该字段作为导出中的列传递。

issues = Student.objects.annotate(Count('issue'))

def view_student(request):  
    issues = Student.objects.annotate(Count('issue'))
    students = Student.objects.filter(school = request.user.school).order_by('year')
    return render(request,'view_student.html',{'students': students,'issues':issues})

这是我在 resoucrces.py 中尝试的方法,但没有显示结果

class ExportStudentsResource(resources.ModelResource):
    books = fields.Field(attribute = 'books',column_name='books',widget= ForeignKeyWidget(Student,'issue_count'))
  
    class Meta:
        model = Student
        fields = ('student_id','name','year','klass','stream','books')

这个字段不是来自任何模型,所以我只是认为学生模型可能包含它。我怎样才能让它工作

解决方法

您可以覆盖 .get_queryset(…) method [Django-doc] 并使用以下内容注释您的 Student 对象:

from django.db.models import Count

class ExportStudentsResource(resources.ModelResource):
    books = fields.Field(
        attribute='books',column_name='books',widget= ForeignKeyWidget(Student,'issue_count')
    )
    issues_count = fields.Field(attribute='issue_count')

    def get_queryset(self):
        return super().get_queryset().annotate(
            issue_count=Count('issue')
        )
  
    class Meta:
        model = Student
        fields = ('student_id','name','year','klass','stream','books')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。