forms.py 936 B

1234567891011121314151617181920212223242526
  1. # -*- coding: utf-8 -*-
  2. from django.forms import ModelForm
  3. from django.db.models import Q
  4. from coin.offers.models import OfferSubscription
  5. from coin.configuration.models import Configuration
  6. class ConfigurationForm(ModelForm):
  7. class Meta:
  8. model = Configuration
  9. def __init__(self, *args, **kwargs):
  10. """
  11. This filter the offersubscription select field in configurations forms
  12. to only display subscription that are the sames type of actual configuration
  13. and that haven't already a configuration associated with
  14. """
  15. super(ConfigurationForm, self).__init__(*args, **kwargs)
  16. if self.instance:
  17. queryset = OfferSubscription.objects.filter(
  18. Q(offer__configuration_type=self.instance.model_name) & (
  19. Q(configuration=None) | Q(configuration=self.instance.pk)))
  20. self.fields['offersubscription'].queryset = queryset