python-доступ к следующему объекту в базе данных, находясь в цикле for

Это мой код. Я перебираю все записи в БД и когда сопоставляет роллоны, я хочу сохранить имя ученика для предыдущего, текущего и следующего учеников за один раз. Есть ли способ его реализовать?

if request.method == 'POST': rollno = request.POST.get('roll',None) studentlist = Students.objects.all() for st in studentlist: if st.roll_no == rollno: three_students=[*prev_student,current_student,next_student*] 

2 Solutions collect form web for “python-доступ к следующему объекту в базе данных, находясь в цикле for”

Если я правильно вас понял, это то, что вы хотите

 # create generator that will provide you with 3 neighobring students at the same time def student_gen(): triple = [] for s in Students.objects.all(): triple.append(s) if len(triple) == 3: yield triple triple.pop(0) # and inside your view ... if request.method == 'POST': rollno = request.POST.get('roll',None) for three_students in student_gen(): if three_students[1].roll_no == rollno: break print(three_students) 

Предполагая, что roll_no является инкрементным, вы можете просто использовать __in

 Student.objects.filter(roll_no__in=[roll_no - 1, roll_no, roll_no + 1]) 

Если вы не можете гарантировать, что они всегда инкрементальны, вам может понадобиться отдельный запрос, чтобы сначала найти roll_no, который вы пытаетесь найти первым.

Например (без обработки ошибок / ошибок),

 rolls = Student.objects.order_by('roll_no').values_list('roll_no', flat=True) idx = rolls.index(rollno) rolls_to_filter_on = rolls[idx-1:3] 
  • Пользовательская система хранения для GridFS (MongoDB)?
  • Какой API Python следует использовать с Mongo DB и Django
  • Python / Django скачать изображение с URL, изменить и сохранить в ImageField
  • Что я должен использовать вместо syncdb в Django 1.9?
  • Django создает CSV-файл, который содержит Unicode и может быть открыт непосредственно с помощью Excel
  • Выполнить скрипт Python как Root (seteuid vs c-wrapper)
  • Форма Django: каков наилучший способ изменения опубликованных данных до проверки?
  • Как создать пул в Django?
  • Python - лучший язык программирования в мире.