有没有办法用默认值@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