0

I am making an admin action that change status field in my model.It's my action code

def update_status(self, request, queryset):
    form = None
    if 'apply' in request.POST:
        form = ChangeStatusForm(request.POST)
        if form.is_valid():
            status = form.cleaned_data['status']
            queryset.update(status=status)
            self.message_user(request, 'Статус изменен для %s билетов' % str(len(queryset)))
            return HttpResponseRedirect(request.get_full_path())
    if not form:
        form = ChangeStatusForm(initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)})
    return render(request, 'change_ticket.html', {'items': queryset, 'form': form, 'title': 'Изменение статуса',
                                                  'message': 'Новый статус будет назначен для следующих билетов:',
                                                  'action': 'update_status'})

and form code

class ChangeStatusForm(forms.Form):
    _selected_action = forms.CharField(widget=forms.MultipleHiddenInput())
    status = forms.ChoiceField(choices=TICKET_STATUS)

It's work fine when I change status for small queryset, but when I try to run this action with huge queryset(3000 instances) it change status only for first 100. It doesn't throw any exceptions. How can I fix this?

Dima Kudosh
  • 7,126
  • 4
  • 36
  • 46

0 Answers0