简体   繁体   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
}

and

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

I wanted to give more than one arguments, definitions to 004 so that if length is different of 7 or 11, then I want to display Bank account number must contain 7 or 11 digits . 我想给004提供多个参数,定义,以便如果lengthlength 7或11,那么我想显示的Bank account number must contain 7 or 11 digits How could I pass more than one arguments to a keyword? 如何将多个参数传递给关键字?

Use a list or a tuple instead of just a integer as the values in the dictionary. 使用列表或元组而不是整数作为字典中的值。

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
}

You would also need to change some of the logic in clean_bank_account too. 您还需要更改clean_bank_account某些逻辑。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM