Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

forms.py 1.0KB

1234567891011121314151617181920212223242526272829303132
  1. from django.conf import settings
  2. from django import forms
  3. from oscar.core.loading import get_model
  4. from oscar.views.generic import PhoneNumberMixin
  5. UserAddress = get_model('address', 'useraddress')
  6. class AbstractAddressForm(forms.ModelForm):
  7. def __init__(self, *args, **kwargs):
  8. """
  9. Set fields in OSCAR_REQUIRED_ADDRESS_FIELDS as required.
  10. """
  11. super(AbstractAddressForm, self).__init__(*args, **kwargs)
  12. field_names = (set(self.fields) &
  13. set(settings.OSCAR_REQUIRED_ADDRESS_FIELDS))
  14. for field_name in field_names:
  15. self.fields[field_name].required = True
  16. class UserAddressForm(PhoneNumberMixin, AbstractAddressForm):
  17. class Meta:
  18. model = UserAddress
  19. exclude = ('user', 'num_orders', 'hash', 'search_text',
  20. 'is_default_for_billing', 'is_default_for_shipping')
  21. def __init__(self, user, *args, **kwargs):
  22. super(UserAddressForm, self).__init__(*args, **kwargs)
  23. self.instance.user = user