【问题标题】:How to get the value of variables individually from property in Django如何从Django中的属性中单独获取变量的值
【发布时间】:2020-05-05 12:35:03
【问题描述】:

这个问题我很难说清楚,所以我会尽量说明我的意思。

我有财产

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 中的不同字段。

【问题讨论】:

    标签: python django django-models


    【解决方案1】:
    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 字符串,但您可以根据需要构建字符串。

    【讨论】:

    • 这不是我的意思。我正在尝试单独获取返回值,因此我可以将这些值连接到不同的 readonly_fields,但现在它们显示在相同的 readonly_field 中。
    • 好吧,不,我不认为你可以。只需声明两个属性。
    【解决方案2】:

    我认为你应该实现两个模型之间的关系。例如,您可以有一个父表和一个子表,这将是Deposit 表,并将带有Foreign Key 的父表连接到Deposit 之一。因此,现在您可以将许多存款单独分配给一位家长。

    我希望这会有所帮助。如果我做对了,请告诉我。

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 1970-01-01
      • 2016-10-07
      • 2015-05-27
      • 2016-05-10
      • 2015-11-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多