Мне нужно выполнить удаление и обновление на основе статуса
Мне нужно выполнить удаление и обновление на основе статуса.
Вот модели:
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