我使用 queryset 创建了 formset 。
就在我使用 formset 呈现模板之前,我更新了 queryset 返回的记录,使它们不再符合 queryset的记录要求。 过滤条件。
如果在呈现模板之前使用 formset 做“某事”(例如print(formset)
或num_forms = formset.total_form_count())
,则它会返回原始查询返回的所有记录。
如果在渲染模板之前不执行 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})