是否可以使用默认值注册设置,然后在模型字段中使用该设置?



有没有办法用默认值@register_setting一个设置,然后在字段的默认值中使用该设置?我希望我的用户能够指定全局税率默认值,但根据需要按位置进行更改。我已经在同一模型的另一个函数中使用了一个设置,但我相信问题可能是在这种情况下它不在函数中。我尝试在default_sales_tax_rate的构造函数中指定default=8.25,但似乎不起作用。我得到一个NameError: name 'DefaultSalesTaxRate' is not defined error.

@register_setting
class DefaultSalesTaxRate(BaseSetting):
default_sales_tax_rate = models.DecimalField(
max_digits=4,
decimal_places=2,
help_text="Default Sales Tax Rate",
default=8.25
)

locations.models.LocationPage(Page(

location_sales_tax_rate = models.DecimalField(max_digits=4, decimal_places=2, default=DefaultSalesTaxRate.objects.first().default_sales_tax_rate)

如果DefaultSalesTaxRate.objects.all().count() == 0,我尝试将变量sales_default赋值为8.25,但这也不起作用。

我还尝试覆盖__init__来添加上面的两行,这给我留下了一个新的错误,即:django.db.utils.OperationalError: no such table: locations_defaultsalestaxrate

我在想,如果表中的设置不存在,可能会有一个钩子或一个信号来实例化它,但我不确定要挂接到哪里或在哪里调用信号。

通过重写__init__解决

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if not self.location_sales_tax_rate:
self.location_sales_tax_rate = DefaultSalesTaxRate.objects.first().default_sales_tax_rate

最新更新