[英]django - custom field from CharField with default args
我正在嘗試在我的項目中使用多個自定義字段。 例如CurrencyField
。 我想給它一個默認的 arguments,比如verbose_name
- "mena" 等等。
Django 引發錯誤:
kwargs['verbose_name'] = kwargs['verbose_name'] or 'Mena'
我想這是因為我有時使用verbose_name
作為位置參數。 我怎樣才能使它“通用”?
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(…)
:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.