我需要通过OrderingFilter过滤平均(非模型)字段.
我的Models.py
class Product(models.Model):
store = models.ForeignKey(Store, on_delete=models.CASCADE, null=True, verbose_name="store")
sku = models.CharField(max_length=255, blank=True, default="", verbose_name="SKU")
name = models.CharField(max_length=255, blank=True, default="", verbose_name="name")
class ProductInfo(models.Model):
default_related_name = "productinfo"
product = models.OneToOneField("Product", on_delete=models.CASCADE, null=True, verbose_name="product")
barcode = models.CharField(max_length=255, null=True, verbose_name="barcode")
price = models.DecimalField(max_digits=7, decimal_places=2, default=Decimal(0), verbose_name="price")
cost_price = models.DecimalField(max_digits=7, decimal_places=2, default=Decimal(0), verbose_name="cost price")
vat = models.DecimalField(max_digits=3, decimal_places=1, default=Decimal(0), verbose_name="% tax")
I通过OrderingFilter过滤产品
我的filters.py
from products.models import Product
from django_filters import OrderingFilter
from django_filters.rest_framework import FilterSet
class ProductFilter(FilterSet):
order_by_field = "ordering"
ordering = OrderingFilter(
fields=(
"name",
(("productinfo__price"), ("price")),
(("productinfo__barcode"), ("barcode")),
)
)
class Meta:
model = Product
我需要计算一下销售的利润.这可以在单独的函数中完成,也可以使用注释.
price-cost_price-taxes_sum=profit
个
但此参数不是模型字段.我可以以某种方式将其添加到过滤器中吗?目标是通过分拣获得能带来更多利润的商品.