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 %}

и вот как это выглядит. student with their classes

между учеником и классом существует взаимосвязь.

Вернуться на верх