簡體   English   中英

單個關鍵字有多個參數

[英]More than one arguments for a single keyword

LOANWOLF_BANK_ACCOUNTS_LENGTH = {
    '001': 7,       # Banque de Montréal
    '002': 7,       # Scotia
    '003': 7,       # RBC
    '004': 7 or 11, # TD (7 or 11)
    '006': 7,       # BNC
    '010': 7,       # CIBC
    '016': 9,       # HSBC
    '039': 9,       # Banque Laurentienne
    '614': 10,      # Tangerine
    '815': 7,       # Desjardins
    '829': 7,       # Desjardins Ontario
}

def clean_bank_account(self):
    bank_account = self.form.cleaned_data.get('bank_account')
    bank_transit = self.form.cleaned_data.get('bank_transit')
    if bank_account not in (None, ''):
        bank = self.form.cleaned_data.get('bank')
        if bank not in (None, ''):

            # Check bank account format for specific banks
            length = settings.LOANWOLF_BANK_ACCOUNTS_LENGTH.get(bank)
            if length:
                if bank_transit not in (None, ''):
                    if not bank_account.isnumeric() or length != len(bank_account):
                        if bank == '004':
                            raise ValidationError(
                                _('Bank account number must contain 7 or 11 digits') % length  # noqa
                            )
                        else:
                            raise ValidationError(
                                _('Bank account number must contain %d digits') % length  # noqa
                            )
                else:
                    raise ValidationError(
                        _('Cannot validate bank account without a valid bank transit')  # noqa
                    )
    return bank_account

我想給004提供多個參數,定義,以便如果lengthlength 7或11,那么我想顯示的Bank account number must contain 7 or 11 digits 如何將多個參數傳遞給關鍵字?

使用列表或元組而不是整數作為字典中的值。

LOANWOLF_BANK_ACCOUNTS_LENGTH = {
    '001': [7],       # Banque de Montréal
    '002': [7],       # Scotia
    '003': [7],       # RBC
    '004': [7, 11],   # TD (7 or 11)
    '006': [7],       # BNC
    '010': [7],       # CIBC
    '016': [9],       # HSBC
    '039': [9],       # Banque Laurentienne
    '614': [10],      # Tangerine
    '815': [7],       # Desjardins
    '829': [7],       # Desjardins Ontario
}

您還需要更改clean_bank_account某些邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM