我的用户记录中包含相关(ish)课程和注册记录。我想点击一个用户,在同一页面中查看用户表,课程表和注册表中的原始数据。
当我尝试渲染表时,该过程会中断。
views.py:
def explore_related(request, client_id, user_id):
client = get_object_or_404(Client, pk=client_id)
users = Users.objects.filter(pk=user_id)
enrollments = Enrollments.objects.filter(client_id=client_id).filter(userID__in=users.values_list('userID', flat=True)).all()
courses = Courses.objects.filter(client_id=client_id).filter(sectionSchoolCode__in=enrollments.values_list('sectionSchoolCode', flat=True)).all()
userTable = UserTable(users, prefix='u_')
courseTable = CourseTable(courses, prefix='c_')
enrollmentTable = EnrollmentTable(enrollments, prefix='e_')
payload = {
'userTable': userTable,
'enrollmentTable': enrollmentTable,
'courseTable': courseTable,
}
return render(request, 'importer/explore_related.html', payload)
explore_related.html:
{% load render_table from django_tables2 %}
<html>
<body>
{% render_table userTable %}
<br>
{% render_table courseTable %}
<br>
{% render_table enrollmentTable %}
</body>
</html>
tables.py
class UserTable(tables.Table):
selection = tables.CheckBoxColumn(accessor='userID', orderable=False)
errors = tables.Column()
User_ID = tables.LinkColumn(
'importer:explore_related',
text=lambda record: record.userID,
kwargs={
'client_id': tables.A('client_id'),
'file_kind': 'user',
'object_id': tables.A('id'),
},
empty_values='NULL',
)
class Meta:
model = Users
attrs = {'class': 'paleblue'}
exclude = ['id', 'client', 'userID']
sequence = (
'selection',
'...',
'errors'
)
class CourseTable(tables.Table):
selection = tables.CheckBoxColumn(accessor='pk', orderable=False)
errors = tables.Column()
class Meta:
model = Courses
attrs = {'class': 'paleblue'}
exclude = ['id', 'client']
sequence = (
'selection',
'...',
'errors'
)
class EnrollmentTable(tables.Table):
selection = tables.CheckBoxColumn(accessor='pk', orderable=False)
errors = tables.Column()
class Meta:
model = Enrollments
attrs = {'class': 'paleblue'}
exclude = ['id', 'client']
sequence = (
'selection',
'...',
'errors'
)
答案 0 :(得分:0)
如果您使用自定义表类,则需要使用 RequestConfig 对象来正确设置表。
在您的示例中,添加
应该足够了RequestConfig(request, paginate=False).configure(userTable)
RequestConfig(request, paginate=False).configure(courseTable)
RequestConfig(request, paginate=False).configure(enrollmentTable)
将它们添加到有效负载之前。