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.
Надеюсь, это поможет.