Bladeren bron

Allow usage of select2_lookups filter in ModelForms outside an AdminModel

Diego Navarro Mellén 9 jaren geleden
bovenliggende
commit
24229f215f
1 gewijzigde bestanden met toevoegingen van 9 en 2 verwijderingen
  1. 9 2
      jet/templatetags/jet_tags.py

+ 9 - 2
jet/templatetags/jet_tags.py

@@ -3,6 +3,7 @@ from django import template
 from django.core.urlresolvers import reverse
 from django.core.urlresolvers import reverse
 from django.db.models import OneToOneField
 from django.db.models import OneToOneField
 from django.forms import CheckboxInput, ModelChoiceField, Select, ModelMultipleChoiceField, SelectMultiple
 from django.forms import CheckboxInput, ModelChoiceField, Select, ModelMultipleChoiceField, SelectMultiple
+from django.contrib.admin.widgets import RelatedFieldWidgetWrapper
 from django.utils.formats import get_format
 from django.utils.formats import get_format
 from django.template import loader, Context
 from django.template import loader, Context
 from jet import settings
 from jet import settings
@@ -194,7 +195,10 @@ def select2_lookups(field):
                             for initial_object in initial_objects]
                             for initial_object in initial_objects]
                     )
                     )
 
 
-                field.field.widget.widget = SelectMultiple(attrs)
+                if isinstance(field.field.widget, RelatedFieldWidgetWrapper):
+                    field.field.widget.widget = SelectMultiple(attrs)
+                else:
+                    field.field.widget = SelectMultiple(attrs)
                 field.field.choices = choices
                 field.field.choices = choices
             elif hasattr(field, 'field') and isinstance(field.field, ModelChoiceField):
             elif hasattr(field, 'field') and isinstance(field.field, ModelChoiceField):
                 if initial_value:
                 if initial_value:
@@ -202,7 +206,10 @@ def select2_lookups(field):
                     attrs['data-object-id'] = initial_value
                     attrs['data-object-id'] = initial_value
                     choices.append((initial_object.pk, get_model_instance_label(initial_object)))
                     choices.append((initial_object.pk, get_model_instance_label(initial_object)))
 
 
-                field.field.widget.widget = Select(attrs)
+                if isinstance(field.field.widget, RelatedFieldWidgetWrapper):
+                    field.field.widget.widget = Select(attrs)
+                else:
+                    field.field.widget = Select(attrs)
                 field.field.choices = choices
                 field.field.choices = choices
 
 
     return field
     return field