Django localflavour

Moduł django.contrib.localflavor.pl.forms zawiera kilka pól dla Forms ułatwiających tworzenie pól walidujących specyficzne dla Polski dane, np. NIP poprzez PLNIPField. Wystarczy zaimportować i wykorzystać... co skończyło się u mnie wyjątkiem klasy PLNIPField:

TypeError: __init__() got multiple values for keyword argument 'max_length'
W przypadku formularza typu:
class CompanyForm(forms.ModelForm):
	nip = PLNIPField("NIP")
	class Meta:
		model = Customer
Żeby to działało musiałem zmienić:
def __init__(self, *args, **kwargs):
        super(PLNIPField, self).__init__(r'^\d{3}-\d{3}-\d{2}-\d{2}$|^\d{2}-\d{2}-\d{3}-\d{3}$',
            max_length=None, min_length=None, *args, **kwargs)
na:
def __init__(self, *args, **kwargs):
        super(PLNIPField, self).__init__(r'^\d{3}-\d{3}-\d{2}-\d{2}$|^\d{2}-\d{2}-\d{3}-\d{3}$')

A że aplikacja miała dopuszczać NIPy 3-3-2-2 to całą klasę skopiowałem do projektu i odpowiednio dopasowałem :)

PS. jak dla mnie nowa dokumentacja Django jest za bardzo rozstrzelona i ciężko znaleźć konkretną informację, której się szuka (i wie czego się szuka).

RkBlog

Django, 27 October 2008

Comment article
Comment article RkBlog main page Search RSS Contact