Есть три варианта, о которых я могу быстро подумать.
Во-первых, вы используете .values_list
и используете позиционное индексирование, а не ключи. Так что в вашем вопросе вы спрашиваете qset.x1, ...
. Вы бы использовали qset.0, qset.1
вместо этого. Однако это трудно поддерживать.
Во-вторых, вы можете аннотировать набор запросов, чтобы определить поля:
Table2.objects.annotate(
x1=F('Field4__abc'),
x2=F('Field5__def'),
...
).values('x1', 'x2', ...)
В-третьих, вы можете создать фиктивную модель представления для перевода экземпляров Model в it.
class ViewModel:
def __init__(self, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
def function2(request):
table2s = Table2.objects.all()
data = [
ViewModel(x1=obj.Field4.abc, x2=Field5.def, ...)
for obj in table2s
]
return render(request, 'template.html', {'data':data})
Количество полей и сложность логики c определит, что подойдет вам лучше всего.