我试图在我的项目中使用多个自定义字段。例如 CurrencyField . 我想给它一个默认参数,比如 verbose_name -“中东和北非”等。
CurrencyField
verbose_name
Django引发错误:
kwargs['verbose_name'] = kwargs['verbose_name'] or 'Mena'
我想这是因为我有时用 冗长的名字 作为一个位置论点。我怎样才能让它“通用”?
冗长的名字
class CurrencyChoices(models.TextChoices): EUR = 'EUR' CHF = 'CHF' CZK = 'CZK' DKK = 'DKK' GBP = 'GBP' HRK = 'HRK' HUF = 'HUF' PLN = 'PLN' RON = 'RON' SEK = 'SEK' USD = 'USD' class CurrencyField(models.CharField): def __init__(self, *args, **kwargs): kwargs['verbose_name'] = kwargs['verbose_name'] or 'Mena' kwargs['max_length'] = 5 kwargs['choices'] = CurrencyChoices.choices super().__init__(*args, **kwargs)
如果不指定 verbose_name 在构造函数中,它将引发 KeyError ,你可以一起工作 .get(â¦) 相反,或许更好: .setdefault(â¦) :
KeyError
.get(â¦)
.setdefault(â¦)
class CurrencyField(models.CharField): def __init__(self, *args, **kwargs): kwargs.setdefault('verbose_name', 'Mena') kwargs['max_length'] = 5 kwargs['choices'] = CurrencyChoices.choices super().__init__(*args, **kwargs)