此表单集发生了什么事?

时间:2019-04-21 17:14:45

标签: django

我使用 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})

0 个答案:

没有答案