Django - 使用 getattr() 检索模型方法 (@属性)

Django - Use getattr() to retrieve Model Method (@property)

我想这样做:

def retrieve_data(self, variable):
    start_date = datetime.date.today() - datetime.timedelta(int(self.kwargs['days']))
    invoice_set = InvoiceRecord.objects.filter(sale_date__gte=start_date)
    total = 0
    for invoice in invoice_set:
        for sale in invoice.salesrecord_set.all():
            total += getattr(self, variable)
    return round(total)

其中变量作为表示我的模型方法之一的字符串提交:

@property
def total_sale(self):
    return self.sales_price * self.sales_qty

但我的努力没有奏效:

def total_sales(self):
    return self.retrieve_data(variable="total_sale")

它只是说:

'SalesSummaryView' object has no attribute 'total_sale'

显然,我误解了用法。有人可以帮我想办法实现这个目标吗?

知道了!我在视图而不是模型上调用 getattr() 。我没有使用 self,而是需要提交 sale 对象。

for invoice in invoice_set:
    for sale in invoice.salesrecord_set.all():
        total += getattr(sale, variable)