RkBlog

Hardware, programming and astronomy tutorials and reviews.

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 PLNIPFie

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