Мне нужно ограничить обновление и удаление только покупками со статусом "EV".

Мне нужно ограничить обновление и удаление покупок только покупками со статусом "EV", те, которые имеют статус "AP", могут быть только прочитаны.

Вот мои модели:

class Purchases(TimeStampedModel):
    values = models.DecimalField(decimal_places=2, max_digits=10, default=0)
    cpf = BRCPFField("CPF")
    status = models.CharField(max_length=2, choices=[('AP', ('Aprovado')), ('EV', ('Em validação'))])
    modified = datetime.today().strftime('%d-%m-%y %H:%M')

    def save(self, *args, **kwargs):
        if self.cpf == "15350946056":
            self.status = "AP"
            super(Purchases, self).save(*args, **kwargs)
        else:
            self.status = "VA"
            super(Purchases, self).save(*args, **kwargs)

    @property
    def clashback(self):
        api = requests.get("https://mdaqk8ek5j.execute-api.us-east-1.amazonaws.com/v1/cashback?cpf=12312312323")
        date = json.loads(api.content)
        valor_carteira = date['body']['credit']

        if self.values <= 1000:
            info_payments = [("porcentual", "10%"), ("valor_clashback", self.values * Decimal('0.1')),
                             ("valor_total", {self.values * Decimal('0.1') + valor_carteira})]
            return info_payments
        elif self.values <= 1500:
            info_payments = [("porcentual", "15%"), ("valor_clashback", self.values * Decimal('0.15')),
                             ("valor_total", {self.values * Decimal('0.15') + valor_carteira})]
            return info_payments
        else:
            info_payments = [("porcentual", "20%"), ("valor_clashback", self.values * Decimal('0.20')),
                             ("valor_total", {self.values * Decimal('0.20') + valor_carteira})]
            return info_payments

    def __str__(self):
        return self.values, self.cpf, self.clashback


Вот мой набор просмотров:

from rest_framework.permissions import SAFE_METHODS
from rest_framework.viewsets import ModelViewSet


from orders.api.serializers import PurchasesInfoSerializers, PurchasesSerializers
from orders.models import Purchases


class PruchasesViewSets(ModelViewSet):
    queryset = Purchases.objects.all()
    filter_fileds = ("cpf",)

    def get_serializer_class(self):
        if self.request.method in SAFE_METHODS:
            return PurchasesInfoSerializers
        return PurchasesSerializers

    def get_queryset(self):
        def get_queryset(self):
            return super().get_queryset().filter(status='AP')

Я попытался создать фильтр, чтобы показывать только покупки со статусом = "EV", однако он даже не показывает мне покупки. И это тоже не решение, так как он не показывает покупки со статусом = "AP".

Как я могу ограничить обновление и удаление?

Вернуться на верх