【问题标题】:How to pass a Count field to export field如何将计数字段传递给导出字段
【发布时间】:2021-05-07 17:19:10
【问题描述】:

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

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')

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

【问题讨论】:

    标签: python-3.x django django-import-export


    【解决方案1】:

    您可以覆盖 .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')

    【讨论】:

      猜你喜欢
      • 2014-09-02
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 2016-08-27
      • 2016-04-18
      相关资源
      最近更新 更多