Django queryset values() в строку или json
Я пытаюсь преобразовать мой dict в список строк. вот что генерируется django froms список студентов
Я хочу иметь список без {''} Мои формы :
students= ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple(
attrs={'class': 'displaynone'}),
queryset=Student.objects.exclude(present=True).order_by(
'name').values('name'),
required=False,
label="Choice Students"
)
и шаблон
{% for i in form.students %}
{{ i }}
{% endfor %}
и я знаю, что могу просто сделать queryset=Student.objects.exclude(present=True).order_by('name')
.
без values(), но я просто хочу получить имя. Это оптимизирует загрузку моей страницы.
Вы можете использовать only для указания определенных полей, которые вы хотите получить из базы данных, если вы впоследствии обратитесь к полю, которое не было включено в only()
, это приведет к запуску запроса
queryset=Student.objects.exclude(present=True).order_by('name').only('name', 'id')
Да, это работает хорошо, но моя нагрузка такая же. Я думаю, это потому, что я также возвращаю классы в свой шаблон. например
<td class="class-name">{% for j in i.data.value|get_classes %}{{ j }}<br/>{% endfor %}</td>
и я использую пользовательские теги для получения классов
def get_classes(student):
mystudent = Student.objects.get(pk=student)
list_student = list()
for i in mystudent.classe_set.all():
list_student.append(i.name)
return list_student
это мой шаблон.
<table class="table" id="student_table">
<thead>
<tr>
<th scope="col">Student(s)</th>
<th scope="col">Classe(s)</th>
</tr>
</thead>
{% for i in form.student %}
<tr class="click_student">
<td>{{ i}}</td>
<td class="schedule-name">{% for j in i.data.value|get_classes %}{{ j }}<br/>{% endfor %}</td>
</tr>
{% endfor %}
между учеником и классом существует взаимосвязь.