【问题标题】:I need to do a delete and update based on status我需要根据状态进行删除和更新
【发布时间】:2021-12-28 22:14:58
【问题描述】:

我需要根据状态进行删除和更新。

这里是模型:

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

但是,他仍然允许编辑状态为已批准的订单。只能删除或编辑状态为“验证中”的购买

有人可以帮我吗?

【问题讨论】:

    标签: python python-3.x django validation django-models


    【解决方案1】:

    qs.filter(…) [Django-doc]过滤查询集qs。它构造了一个 new 查询集,它是@​​987654324@ 的过滤变体。

    因此您应该返回过滤后的查询集,或将结果分配给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

    【讨论】:

    • 我进行了更改,但我仍然可以将其更改为其他状态
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多