问题描述
我正在处理导出资源,但我不知道如何从视图中将该字段作为导出中的列传递。
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')