首页 > 解决方案 > 如何从Django中的属性中单独获取变量的值

问题描述

我很难提出这个问题,所以我会尽力说明我的意思。

我有财产

def count_tax_rate(self):
    if self.deposit_value > 100:
        Deposits.objects.update(tax_rate=self.tax_rate+10)
        return self.tax_rate + 10
count_tax_rate.short_description = "Tax rate"
tax_rate_property = property(count_tax_rate)

然后我将此属性连接到我的 admin.ModelAdmin 表单。

class DepositAdmin(admin.ModelAdmin):
    readonly_fields = ('temporary_deposit_income', 'temporary_total_income', 'tax_rate_property',
                       'deposit_creating_date', 'deposit_end_date')
    form = DepositForm

在我的管理面板中,这给了我

Tax rate = 10

但我需要在我的管理面板中计算并显示多个变量。

我试图重写我的属性函数

def count_tax_rate(self):
    if self.deposit_value > 100:
        Deposits.objects.update(tax_rate=self.tax_rate+10, total_income=self.deposit_value+100)
        return self.tax_rate + 10, self.deposit_value + 100
count_tax_rate.short_description = "Tax rate"
tax_rate_property = property(count_tax_rate)

但它给了我这个

Tax rate = (Decimal('10.00'), 200)

我知道这是财产的运作方式。

有什么方法可以从一个属性函数中获取多个值,还是我必须寻找完全不同的解决方案?

PS。我需要单独使用这些值,因此我可以将它们用作 readonly_fields 中的不同字段。

标签: pythondjangodjango-models

解决方案


def count_tax_rate(self):
    if self.deposit_value > 100:
        Deposits.objects.update(tax_rate=self.tax_rate+10, total_income=self.deposit_value+100)
        return f"Tax rate: {self.tax_rate + 10}, Deposit value: {self.deposit_value + 100}"

如果我理解您的问题,您希望在单个列中有多个值。我不知道你为什么要这样做,我建议你使用两个属性并将它们链接到两列,但是如果你想以这种方式继续,那么你可以只返回一个包含两个值的字符串。

我在这里使用 f 字符串,但您可以根据需要构建字符串。


推荐阅读