class OrganizationForm(forms.ModelForm): phone_number = USPhoneNumberField(required=False) mailing_address_state = USStateField(widget=USStateSelect, required=True, label='State') mailing_address_zip = USZipCodeField(required=True, label='Zipcode') class Meta: model = Organization exclude = ['user', 'date_created'] def __init__(self, *args, **kwargs): super(OrganizationForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_id = 'OrganizationForm' self.helper.form_class = 'form-horizontal' #self.helper.field_class = 'col-lg-4' #self.helper.label_class = 'col-lg-2' self.helper.form_tag = True self.helper.layout = Layout( Fieldset('Add Third Party Buyer', HTML(""" <p>If you are applying on behalf of an organization, family member, client or other third party who will take title, provide their name and contact information.</p> """), Field('name'), Field('email'), Field('phone_number'), css_class='well'), Fieldset('Type and Relationship', Field('entity_type'), Field('relationship_to_user'), css_class='well'), Fieldset('Mailing Address', Field('mailing_address_line1'), Field('mailing_address_line2'), Field('mailing_address_line3'), Field('mailing_address_city'), Field('mailing_address_state'), Field('mailing_address_zip'), css_class='well'), Fieldset( 'Supporting Documents', HTML(""" <p>Organizations should provide additional identifying and financial documents.</p> """), Field('sos_business_entity_report'), #Field('irs_determination_letter'), #Field('most_recent_financial_statement'), #HTML('<div class="form-group"><div class="control-label col-lg-4">Attach a file</div><div id="file-uploader" class="form-control-static col-lg-6">Drop your file here to upload</div>'), css_class='well'), FormActions( #Button('cancel', 'Cancel'), Submit('save', 'Save'))) self.helper.form_method = 'post' self.helper.form_action = ''
class USPostalAddressForm(PostalAddressForm): line1 = forms.CharField(label=_(u"Street"), max_length=50) line2 = forms.CharField(label=_(u"Area"), required=False, max_length=100) city = forms.CharField(label=_(u"City"), max_length=50) state = USStateField(label=_(u"US State"), widget=USStateSelect) code = USZipCodeField(label=_(u"Zip Code")) def __init__(self, *args, **kwargs): super(USPostalAddressForm, self).__init__(*args, **kwargs) self.fields['country'].initial = "US"
class OrderCreateForm(forms.ModelForm): """ docs. """ postal_code = USZipCodeField() class Meta: model = Order fields = [ 'first_name', 'last_name', 'email', 'address', 'postal_code', 'city' ]
class AddressForm(forms.Form): address_street1 = forms.CharField(label='Address', max_length=90) address_street2 = forms.CharField(label='Address line 2', required=False) address_city = forms.CharField(label='City', max_length=90) address_state = USStateField( label="State", initial="MN", widget=USStateSelect(attrs={'class': 'custom-select'})) address_zip = USZipCodeField(label='Zip Code')
class VoterForm(forms.Form): email = forms.EmailField() zipcode = USZipCodeField() captcha = NoReCaptchaField(gtag_attrs={'data-size': 'compact'}) def __init__(self, *args, **kwargs): super(VoterForm, self).__init__(*args, **kwargs) def ignore_captcha(self): del self.fields['captcha']
class SearchForm(forms.Form): def __init__(self, *args, **kwargs): user = kwargs.pop('user') super(SearchForm, self).__init__(*args, **kwargs) if user.is_superuser: states = list(STATE_CHOICES) else: user_states = [org.state for org in user.organizations.all()] states = [] for state in list(STATE_CHOICES): if state[0] in user_states: states.append(state) states.insert(0, ('', 'Select ...')) self.fields['state'] = USStateField( required=False, widget=forms.Select(choices=states), label='State') signed_petition = forms.BooleanField(required=False, label='Signed Petition') has_phone_number = forms.BooleanField(required=False, label='Has Phone Number') volunteer_activity = forms.ModelMultipleChoiceField( required=False, label='Volunteer Activities', queryset=VolunteerActivity.objects.all()) city = forms.CharField(required=False, label='City') zip = USZipCodeField(required=False, label='Zip') zip_radius = forms.IntegerField( required=False, label='Radius in Miles', help_text='Leave blank for exact zip code match') def clean(self): cleaned_data = super(SearchForm, self).clean() # make sure they selected at least one search field if not cleaned_data.get('signed_petition') and not cleaned_data.get('volunteer_activity') \ and not cleaned_data.get('has_phone_number') and not cleaned_data.get('city') \ and not cleaned_data.get('state') and not cleaned_data.get('zip'): self.add_error('volunteer_activity', 'Please select at least one search criteria.') elif cleaned_data.get('zip'): try: ZipCode.objects.get(zip=cleaned_data.get('zip')) except ZipCode.DoesNotExist: self.add_error('zip', 'Invalid zip code') elif cleaned_data.get('zip_radius') and not cleaned_data.get('zip'): self.add_error( 'zip', 'A zip code is required when searching on zip code radius')
def clean_postal_code(country, code): if not code: # Other places are responsible for checking whether empty is okay. return code if country == 'GB': field = GBPostcodeField() elif country == 'US': field = USZipCodeField() else: return code return field.clean(code)
class SignUpForm(UserCreationForm): first_name = forms.CharField(max_length=40, required=True, help_text='Required') last_name = forms.CharField(max_length=40, required=True, help_text='Required') email = forms.EmailField(max_length=254, required=True, help_text='Required') address = forms.CharField(max_length=254, required=True, help_text='Required') state = USStateField(required=True, widget=USStateSelect(), help_text='Required') city = forms.CharField(max_length=85, required=True, help_text='Required') zip_code = USZipCodeField(required=True, help_text='Required') class Meta: model = User fields = ('username', 'password1', 'password2', 'first_name', 'last_name', 'email') def clean_email(self): email = self.cleaned_data['email'] if User.objects.filter(email=email).count() > 0: raise forms.ValidationError( "A user with that email already exists.") return email def clean_first_name(self): first_name = self.cleaned_data['first_name'] has_name_chars(first_name) return first_name def clean_last_name(self): last_name = self.cleaned_data['last_name'] has_name_chars(last_name) return last_name def clean_city(self): city = self.cleaned_data['city'] has_name_chars(city) return city def clean_address(self): address = self.cleaned_data['address'] for char in address: if char in "!@$%^&*()~,./?;:": raise forms.ValidationError( 'You included an in Invalid Symbol in the address field') return address
class OrderCreateForm(forms.ModelForm): postal_code = USZipCodeField() state = USStateSelect() class Meta: model = Order fields = [ 'address', 'postal_code', 'city', 'state', ] #
class PractProfileForm(forms.ModelForm): class Meta: model = Practitioner exclude = ('account', 'available', 'verified', 'created', 'updated_at') phone = forms.IntegerField(required=False) accreditation = forms.CharField(required=False) license = forms.CharField(required=False) state = USStateField(required=False) zipcode = USZipCodeField(required=False) school = forms.CharField(required=False) about = forms.CharField(required=False, widget=forms.Textarea)
class OrderCreateForm(forms.ModelForm): country = CountryField().formfield() #state = forms.CharField(widget=USStateSelect()) postal_code = USZipCodeField() class Meta: model = Order fields = [ 'first_name', 'last_name', 'email', 'address', 'postal_code', 'country', 'city', 'state' ]
class AddressForm(forms.ModelForm): """A form for entering an address""" # Character limits are for conforming to Lob's requirements agency_override = forms.CharField( max_length=40, label="Name", required=False, help_text= "Who the letter should be addressed to. If left blank, will default " "to the agency's name. This should be filled in if the agency name " "is greater than 40 characters for Lob compatibility", ) attn_override = forms.CharField( max_length=40, label="Attention of", required=False, help_text= "Who the letter should be to the attention of. If left blank, " "will default to the FOIA Office (or applicable law for states).", ) street = forms.CharField(max_length=64) suite = forms.CharField(max_length=64, required=False) city = forms.CharField(max_length=200) state = forms.ChoiceField(choices=(("", "---"), ) + tuple(STATE_CHOICES)) zip_code = USZipCodeField() class Meta: model = Address fields = [ "agency_override", "attn_override", "street", "suite", "city", "state", "zip_code", ] def __init__(self, *args, **kwargs): self.agency = kwargs.pop("agency") super(AddressForm, self).__init__(*args, **kwargs) def clean_agency_override(self): """Require this field if the agency name is too long""" agency_override = self.cleaned_data["agency_override"] if (not agency_override and not self.agency.mail_name and len(self.agency.name) > 40): raise forms.ValidationError( "Must supply a name since the agency name is over 40 characters long" ) return agency_override
class OrderCreateForm(forms.ModelForm): postal_code = USZipCodeField() class Meta: model = Order fields = [ "first_name", "last_name", "email", "address", "postal_code", "city", ]
def __init__(self, *args, **kwargs): """Constructor for AltLocationField. Setting up and providing fields list to parent`s init. """ list_fields = [ forms.CharField(max_length=255), forms.CharField(max_length=255), USStateField(), USZipCodeField() ] super().__init__(list_fields, *args, **kwargs)
class PropertyListingForm(forms.ModelForm): address = forms.CharField() city = forms.CharField() state = forms.ModelChoiceField(queryset=State.objects.all()) zip_code = USZipCodeField() beds = forms.IntegerField() baths = forms.FloatField() class Meta: model = PropertyListing fields = '__all__' widgets = { 'available_date': forms.DateInput(attrs={'class': 'datepicker'}) }
class OpenDebatesRegistrationForm(RegistrationForm): first_name = forms.CharField(max_length=30) last_name = forms.CharField(max_length=30) display_name = forms.CharField(max_length=255, label=mark_safe(display_name_label), required=False) twitter_handle = forms.CharField(max_length=255, label=mark_safe(twitter_handle_label), required=False) zip = USZipCodeField() captcha = NoReCaptchaField(label=_("Are you human?")) def clean_twitter_handle(self): if self.cleaned_data.get("twitter_handle", "").startswith("@"): return self.cleaned_data['twitter_handle'].lstrip("@") if self.cleaned_data.get("twitter_handle", "").startswith("https://twitter.com/"): return self.cleaned_data['twitter_handle'][20:] if self.cleaned_data.get("twitter_handle", "").startswith("http://twitter.com/"): return self.cleaned_data['twitter_handle'][19:] if self.cleaned_data.get("twitter_handle", "").startswith("twitter.com/"): return self.cleaned_data['twitter_handle'][12:] return self.cleaned_data.get("twitter_handle", "").strip() or None def clean_email(self): """ Validate that the supplied email address is unique for the site. """ User = get_user_model() if User.objects.filter(email__iexact=self.cleaned_data['email']): raise forms.ValidationError( "This email address is already in use. Please supply " "a different email address.") return self.cleaned_data['email'] def save(self, commit=True): user = super(OpenDebatesRegistrationForm, self).save(commit=False) user.first_name = self.cleaned_data['first_name'] user.last_name = self.cleaned_data['last_name'] if commit: user.save() return user def ignore_captcha(self): del self.fields['captcha']
class ResourceForm(ModelForm): """Form for editing and creating resources.""" state = forms.ChoiceField(choices=[('Washington', 'Washington')], initial='Washington', disabled=True, label='State') street = forms.CharField(required=False) zip_code = USZipCodeField(required=False) phone_number = USPhoneNumberField(required=False) fax_number = USPhoneNumberField(required=False) website = forms.URLField(initial='http://', required=False) class Meta: model = Resource fields = [ 'name', 'description', 'street', 'city', 'state', 'zip_code', 'website', 'phone_number', 'fax_number', 'email', 'image', 'gender', 'languages', 'services', 'lower_age', 'upper_age', 'us_citizens_only', 'sober_only', 'case_managers', 'open_24_hours', 'pets', 'accepts_sex_offender_records', 'accepts_criminal_records', 'accepts_incarcerated', 'family_friendly', 'orca_cards_available' ] widgets = { 'languages': forms.CheckboxSelectMultiple(), 'services': forms.CheckboxSelectMultiple() } labels = { 'languages': 'Languages spoken:', 'services': 'Select all services your organization provides.', 'gender': 'Gender restrictions?', 'lower_age': 'Lower age limit', 'upper_age': 'Upper age limit', 'pets': 'Pets allowed' } def clean(self): """Overridden clean method for validation of the age inputs.""" if self.cleaned_data['upper_age'] <= self.cleaned_data['lower_age']: raise ValidationError( 'Invalid entries for lower and upper age ranges.') return self.cleaned_data
class ContactForm(forms.Form): address_street1 = forms.CharField(label='Address', max_length=90) address_street2 = forms.CharField(label='Address line 2', required=False) address_city = forms.CharField(label='City', max_length=90) address_state = USStateField( label="State", initial="MN", widget=USStateSelect(attrs={'class': 'custom-select'})) address_zip = USZipCodeField(label='Zip Code') phone_number = PhoneNumberField(label="Phone", region='US') phone_can_receive_sms = forms.BooleanField( label='This phone can receive SMS messages.', required=False) emergency_contact_name = forms.CharField(label='Emergency Contact', max_length=90) emergency_contact_phone = PhoneNumberField(region='US')
class CheckoutForm(forms.Form): first_name = forms.CharField() last_name = forms.CharField() street_address_1 = forms.CharField(widget=forms.TextInput( attrs={ 'class': "form-control", 'placeholder': "1234 Main St." })) apartment = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': "form-control", 'placeholder': "Apartment or suite" })) country = forms.ChoiceField(choices=COUNTRY_CHOICES, widget=forms.Select( attrs={ 'onChange': 'countrySelect(this)', 'class': 'custom-select d-block w-100', })) province = CAProvinceField(widget=CAProvinceSelect( attrs={ 'type': 'hidden', 'class': 'custom-select d-block w-100', })) ca_postal_code = CAPostalCodeField( required=False, widget=forms.TextInput(attrs={ 'class': 'custom-select d-block w-100', })) us_state = USStateField( widget=USStateSelect(attrs={ 'class': 'custom-select d-block w-100', }), required=False) us_zip_code = USZipCodeField( required=False, widget=forms.TextInput(attrs={ 'class': 'custom-select d-block w-100', })) same_billing_address = forms.BooleanField(widget=forms.CheckboxInput(), required=False) save_info = forms.BooleanField(widget=forms.CheckboxInput(), required=False) payment_option = forms.ChoiceField(choices=PAYMENT_CHOICE, widget=forms.RadioSelect())
class Meta: model = Order fields = [ 'first_name', 'last_name', 'email', 'address', 'postal_code', 'city', 'country' ] widget = { 'first_name': forms.TextInput(attrs={'class': 'form-control'}), 'last_name': forms.TextInput(attrs={ 'class': 'form-control', }), 'email': forms.EmailInput(attrs={'class': 'form-control'}), 'address': forms.TextInput(attrs={'class': 'form-control'}), 'postal_code': USZipCodeField(), 'city': forms.TextInput(attrs={'class': 'form-control'}), 'country': forms.TextInput(attrs={'class': ' form-control'}), }
class Address(models.Model): street = models.CharField(max_length=50) city = models.CharField(max_length=50) state = USStateField() zip_code = USZipCodeField() def __str__(self): if self.person_set.count() > 0: users = [u.fullname for u in self.person_set.select_related()] return ','.join(users) + '\'s address' elif self.company_set.count() > 0: companies = [u.name for u in self.company_set.select_related()] return ','.join(companies) + '\'s address' else: return "Unassociated Address" class Meta: verbose_name = "Address" verbose_name_plural = "Addresses"
class BillingUpdateForm(forms.ModelForm): """ A form to accept a credit card updates """ payment_method_nonce = forms.CharField(required=True, error_messages={'required': 'Payment token is required.'}) nickname = forms.CharField(max_length=20,required=False,widget=forms.TextInput(attrs={'placeholder': 'Nickname'})) is_default = forms.BooleanField(label="Make this payment default", required=False, widget=forms.CheckboxInput()) street_1 = forms.CharField(max_length=128, required=False, error_messages={'required': 'Billing street address is required.'}, widget=forms.TextInput(attrs={'placeholder': 'Street Address 1'})) street_2 = forms.CharField(max_length=128, required=False, widget=forms.TextInput(attrs={'placeholder': 'Street Address 2'})) city = forms.CharField(max_length=64, required=False, error_messages={'required': 'Billing city is required.'}, widget=forms.TextInput(attrs={'placeholder': 'City'})) state = forms.ChoiceField(required=False, choices=STATE_CHOICES, initial='TX') postal_code = USZipCodeField(required=False, error_messages={'required': 'Billing zip code is required.'}, widget=forms.TextInput(attrs={'placeholder': 'Billing Zip Code'})) class Meta: model = Address fields = ('street_1', 'street_2', 'city', 'state', 'postal_code')
class PractInfoForm(forms.Form): class Meta: model = Practitioner # fields = ["username","password","password_c","first_name","last_name","email","phone","zipcode"] exclude = ('available', 'verified', 'created', 'updated_at') username = forms.CharField(max_length=100) password = forms.CharField(max_length=50, widget=forms.PasswordInput) password_c = forms.CharField(max_length=50, widget=forms.PasswordInput) first_name = forms.CharField(max_length=100) last_name = forms.CharField(max_length=100) email = forms.EmailField() phone = forms.IntegerField(required=False) # state = forms.ChoiceField(choices=STATE_CHOICES) state = USStateField(required=False) zipcode = USZipCodeField(required=False)
class ProfileForm(ModelForm): STATE_CHOICES = list(STATE_CHOICES) STATE_CHOICES.insert(0, ('', '---------')) state = USStateField( widget=forms.Select(choices=STATE_CHOICES, attrs={'class': 'form-control'}), required=False, ) zip_code = USZipCodeField( widget=forms.TextInput(attrs={'class': 'form-control'}), required=False, ) class Meta: model = UserProfile fields = ( 'employer', 'address1', 'address2', 'city', 'state', 'zip_code', 'wants_newsletter', 'barmembership', 'plaintext_preferred', ) widgets = { 'employer': forms.TextInput(attrs={'class': 'form-control'}), 'barmembership': forms.SelectMultiple(attrs={ 'size': '8', 'class': 'form-control' }), 'address1': forms.TextInput(attrs={'class': 'form-control'}), 'address2': forms.TextInput(attrs={'class': 'form-control'}), 'city': forms.TextInput(attrs={'class': 'form-control'}), # 'wants_newsletter': forms.TextInput(attrs={'class': 'form-control'}), # 'plaintext_preferred': forms.TextInput(attrs={'class': 'form-control'}), }
class LocationForm(forms.ModelForm): zipcode = USZipCodeField() class Meta: model = Location fields = ('zipcode', ) def __init__(self, *args, **kwargs): self.owner = kwargs.pop('owner') super(LocationForm, self).__init__(*args, **kwargs) def clean_zipcode(self): zipcode = self.cleaned_data['zipcode'][:5] if Location.objects.filter(owner_id=self.owner, zipcode=zipcode).exists(): raise forms.ValidationError( "You already have this zipcode in your list.") elif zipcodes.is_real(zipcode) == False: raise forms.ValidationError("You must enter a real US zipcode.") return zipcode
class RegisterForm(forms.Form): def __init__(self, *args, **kwargs): kwargs.setdefault('label_suffix', '') super(RegisterForm, self).__init__(*args, **kwargs) email = forms.EmailField(label="Email", max_length=255) fname = forms.CharField(label="First name", max_length=50) lname = forms.CharField(label="Last name", max_length=50) password = forms.CharField(label="Password", widget=forms.PasswordInput, max_length=100) rpassword = forms.CharField(label="Confirm password", widget=forms.PasswordInput, max_length=100) street = forms.CharField(label="Street address", max_length=128) city = forms.CharField(label="City", max_length=64) state = USStateField(label="State") zip = USZipCodeField(label="Zip", max_length=5) action = forms.CharField(label="action", widget=forms.HiddenInput(), initial="kek")
class AddressForm(forms.ModelForm): address = forms.CharField(max_length=20, required=True) state = USStateSelect() city = forms.CharField(max_length=20) zipcode = USZipCodeField() class Meta: model = Address fields = ('address', 'state', 'city', 'zipcode') def save(self, commit=True): address = super().save(commit=False) address.address = self.cleaned_data.get('address') address.state = self.cleaned_data.get('state') address.city = self.cleaned_data.get('city') address.zipcode = self.cleaned_data.get('zipcode') if commit: address.save() return address
class Passport(forms.Form): another_passport = forms.ChoiceField(label="Do you have a passport from another country?", choices=YES_OR_NO_RADIO, widget=UswdsRadioSelect, required=False) # @todo: Implement subsequent conditional qs. # From which country or countries do you currently have a passport? # What is the status of your current passport(s)?) travel_departure_date = forms.DateTimeField(label='Consider your upcoming travel plans. On what date (MM/DD/YYYY) do you plan to leave the United States?', help_text="If you do not have any upcoming travel plans, please leave this field blank.", required=False) travel_return_date = forms.DateTimeField(label='On what date (MM/DD/YYYY) do you plan to return?', help_text="If you do not have any upcoming travel plans, please leave this field blank.", required=False) travel_destinations = forms.CharField(label="Which country or countries will you visit?", required=False) emergency_contact_name = forms.CharField(label="Emergency contact's name", required=False) emergency_contact_phone = USPhoneNumberField(label="Emergency contact's phone number", required=False) emergency_contact_address_street = forms.CharField(label="Emergency contact's street number and name", required=False) emergency_contact_address_apt = forms.CharField(label="Emergency contact's apartment or floor number (if applicable)", required=False) emergency_contact_address_city = forms.CharField(label="Emergency contact's city", required=False) emergency_contact_address_state = forms.ChoiceField(choices=STATES, label="Emergency contact's state", required=False) # @maybe: Refactor as a USStateSelect. Also, allow non-U.S. answers. emergency_contact_address_zip = USZipCodeField(label="Emergency contact's ZIP code", required=False) # @maybe: Refactor these as CountryField()s. # Docs: https://pypi.python.org/pypi/django-countries#countryselectwidget emergency_contact_address_country = forms.CharField(label="Emergency contact's country, if outside the U.S.", required=False) emergency_contact_email = forms.EmailField(label="Emergency contact's email address", required=False) emergency_contact_relationship = forms.CharField(label="Emergency contact's relationship", required=False)
class ProfileForm(forms.Form): """ A form for a user to update their basic profile information """ first_name = forms.CharField(max_length=30, error_messages={'required': 'First name is required.'}) last_name = forms.CharField(max_length=30, error_messages={'required': 'Last name is required.'}) email = forms.EmailField(error_messages={'required': 'Email address is required.'}) company_name = forms.CharField(max_length=120, required=False, error_messages={}) phone = USPhoneNumberField(error_messages={'required': 'Phone number is required.'}) mobile_phone = USPhoneNumberField(required=False, error_messages={}) ship_street_1 = forms.CharField(max_length=128, required=False) ship_street_2 = forms.CharField(max_length=128, required=False) ship_city = forms.CharField(max_length=64, required=False) ship_state = forms.ChoiceField(required=False, choices=STATE_CHOICES, initial='TX') ship_postal_code = USZipCodeField(required=False) date_of_birth = forms.DateField(widget=forms.DateInput(format='%m/%d/%Y'), input_formats=('%m/%d/%Y', '%m/%d/%y',), error_messages={'required': 'Date of Birth is required.'}) weight = forms.ChoiceField(widget=forms.Select, choices=UserProfile.WEIGHT_RANGE_CHOICES) origin_airport = AdvancedModelChoiceField(queryset=Airport.objects.all(), widget=forms.RadioSelect, required=False, empty_label=None) food_options = forms.ModelMultipleChoiceField(queryset=FoodOption.objects.all(), widget=forms.CheckboxSelectMultiple, required=False) allergies = forms.CharField(max_length=128, required=False) def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') super(ProfileForm, self).__init__(*args, **kwargs) def clean_email(self): """ Check to see if this email already belongs to someone else. """ email = self.cleaned_data.get('email') if User.objects.filter(email=email).exclude(id=self.user.id).exists(): self._errors['email'] = self.error_class(['This email has already been used.']) return email
class ProfileEditForm(forms.ModelForm): SEX = ( ('s', 'SEX'), ('m', 'MALE'), ('f', 'FEMALE'), ) MARITAL = ( ('si', 'SINGLE'), ('ma', 'MARRIED'), ('di', 'DIVORCED'), ('se', 'SEPERATED'), ) KIDS = (('no', 'NO'), ('yes', 'YES'), ('maybe', 'MAYBE')) SEX_INTEREST = ( ('m', 'MALE'), ('f', 'FEMALE'), ('b', 'MALE & FEMALE'), ) PROFILE_STATE_CHOICES = list(STATE_CHOICES) PROFILE_STATE_CHOICES.insert(0, ('', 'STATES')) sex = forms.CharField(widget=forms.Select(choices=SEX)) marital = forms.CharField(widget=forms.Select(choices=MARITAL)) kids = forms.CharField(widget=forms.Select(choices=KIDS)) interest = forms.CharField(widget=forms.Select(choices=SEX_INTEREST)) DOB = forms.DateField(widget=forms.TextInput( attrs={'class': 'datepicker'})) zip_code = USZipCodeField() state_province = USStateField(widget=forms.Select( choices=PROFILE_STATE_CHOICES)) SSN = USSocialSecurityNumberField() phone = PhoneNumberField() fax = PhoneNumberField() class Meta: model = Profile fields = ('username', 'passport', 'sex', 'interest', 'marital', 'kids', 'next_of_kin', 'height', 'DOB', 'phone', 'fax', 'address', 'city', 'zip_code', 'state_province', 'SSN', 'country') widgets = {'country': CountrySelectWidget()}