Я создал набор форм , используя queryset .
Непосредственно перед рендерингом шаблона с formset я обновляю записи queryset , возвращенные таким образом, что они больше не встретились бы с критерий фильтра queryset.
Если я сделаю «что-то» (т. Е. print(formset)
или num_forms = formset.total_form_count())
w / formset до рендеринга шаблона, он возвращает все записи, которые возвращает исходный запрос.
Если я не сделаю что-нибудь с formset до рендеринга шаблона, formset пуст.
Достаточно легко выйтикакая-то произвольная операция в коде, но хотелось бы понять, что здесь происходит.
Код из views.py:
batch = (Ad.objects.filter(
(Q(labeler_expiration__lt=timezone.now()) | Q(labeler_expiration__isnull=True))
& Q(category__isnull=True))
.order_by('id')[:25]
)
formset = AdFormSet(queryset=batch)
#Here I need to do something w/ the formset:
num_forms = formset.total_form_count()
#print(formset) #This print could also work instead of the line above
(Ad.objects.filter(pk__in=batch.values('pk'))
.update(labeler=request.user.labeler, labeler_expiration=(timezone.now() + timedelta(minutes=25))))
return render(request, 'label_ads_batch.html', {'formset': formset})