簡體   English   中英

Django Model 作為數據庫級別的計算字段?

[英]Django Model Calculated field as Database level?

我在下面有簡化的 model:

class Product(models.Model):
    name = models.CharField(max_length=50)
    price = models.FloatField()

class Invoice(models.Model):
    product = models.ForeignKey(Product,on_delete=models.PROTECT)
    quantity = models.FloatField()

    @property
    def total(self):
        return self.quantity * self.product.price

我希望能夠對我的發票數據進行數據分析。 如果我將查詢集加載到列表中,則缺少總屬性

Invoice.object.all().values_list()

django 有沒有辦法將屬性字段計算為數據庫級別? 所以從查詢集中分析很容易(理想情況下我想加載數據框)

感謝您的提示!

一個懶惰的方法,直到你找到更好的方法

result = [{
    "id": invoice.id,
    "product": invoice.product,
    "quantity": invoice.quantity,
    "total": invoice.total,
} for invoice in Invoice.object.all()]

根據 B. Okba 的回答,我對我的代碼進行了一些調整,首先轉換為 dataframe,然后調用總值:

from django_pandas.io import read_frame
df = read_frame(Invoice.objects.all())
df['total'] = df.apply(lambda x: Invoice.objects.get(id=x['id']).total,axis=1)

但我仍然很好奇是否有更好/更有效的處理方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM