Администратор Django IPAddressField не позволяет *. *. *. * - PullRequest
0 голосов
/ 02 мая 2011

Как разрешить IPAddressField принимать строку . . *. *?

Теперь каждый раз, когда я пытался сохранить, я получал Введите действительный адрес IPv4.ошибка.

1 Ответ

1 голос
/ 02 мая 2011
class YourForm(forms.Form):
    ipfield = forms.CharField()

    def clean_ipfield(self):        
        value = self.cleaned_data['ipfield']
        # Check if they saved an IP, only use this if the field is required
        if not value:
            if self.fields['ipfield'].required:
                raise forms.ValidationError('No IP was given')
            else:
                return value

        ip = value.split('.')

        # Make sure the ip has atleast 4 parts to it
        # Upto 8 are required for IPv6
        if 4 > len(ip) or len(ip) > 8 :
            raise forms.ValidationError('An invalid IP address was entered')

        # Check that all parts are digits or '*' (additional checks can be done here too)
        for i in ip:
            if i != '*' and not i.isdigit():
                raise forms.ValidationError('%s is not a valid IP part' % i)

        return '.'.join(ip)

Не уверен, что это то, что вам нужно или нет. Вместо использования фактического IpAddressField () вы можете использовать CharField () и самостоятельно предоставлять собственные проверки, например, так. Обратите внимание, что YourForm - это имя вашей фактической формы, а ipfield - имя вашего текущего IpAddressField.

Надеюсь, это поможет.

...