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)
我想这样做:
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)