Мне нужно ограничить обновление и удаление только покупками со статусом "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".
Как я могу ограничить обновление и удаление?