Мне нужно выполнить удаление и обновление на основе статуса

Мне нужно выполнить удаление и обновление на основе статуса.

Вот модели:

class Purchases(TimeStampedModel):
    APROVADO = "AP"
    EM_VALIDACAO = "VA"
    STATUS_CHOICHES = (
        (APROVADO, "Aprovado"),
        (EM_VALIDACAO, "Em validação"),
    )
    values = models.DecimalField(decimal_places=2, max_digits=10, default=0)
    cpf = BRCPFField("CPF")
    status = models.CharField(max_length=20, choices=STATUS_CHOICHES, default=EM_VALIDACAO)

Я пытаюсь сделать следующее в моем наборе представлений:

    def get_queryset(self):
        qs = super().get_queryset()
        if self.action in ("update", "parcial_update", "delete"):
            qs.filter(Purchases.status=="VA")
        return qs

Однако он по-прежнему позволяет редактировать заказы со статусом "Одобрено". Удалить или отредактировать можно только заказ со статусом "В проверке"

Может ли кто-нибудь мне помочь?

qs.filter(…) [Django-doc] делает не фильтрацию кверисета qs. Он строит новый кверисет, который является отфильтрованным вариантом qs.

Таким образом, вы должны вернуть отфильтрованный набор запросов или присвоить результат qs:

def get_queryset(self):
    qs = super().get_queryset()
    if self.action in ('update', 'parcial_update', 'delete'):
        return qs.filter(Purchases.status=='VA')
    return qs
Вернуться на верх