浏览代码

Merge pull request #16 from Feverup/dev

Allow usage of select2_lookups filter in ModelForms outside Admin
Denis K. 9 年之前
父节点
当前提交
3c6291b240
共有 1 个文件被更改,包括 9 次插入2 次删除
  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