You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

forms.py 893B

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