|
@@ -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
|
|
@@ -184,7 +185,8 @@ def select2_lookups(field):
|
|
'data-ajax--url': reverse('jet:model_lookup')
|
|
'data-ajax--url': reverse('jet:model_lookup')
|
|
}
|
|
}
|
|
|
|
|
|
- initial_value = field.form.initial.get(field.name)
|
|
|
|
|
|
+ form = field.form
|
|
|
|
+ initial_value = form.data.get(field.name) if form.data != {} else form.initial.get(field.name)
|
|
|
|
|
|
if hasattr(field, 'field') and isinstance(field.field, ModelMultipleChoiceField):
|
|
if hasattr(field, 'field') and isinstance(field.field, ModelMultipleChoiceField):
|
|
if initial_value:
|
|
if initial_value:
|
|
@@ -194,14 +196,22 @@ def select2_lookups(field):
|
|
for initial_object in initial_objects]
|
|
for initial_object in initial_objects]
|
|
)
|
|
)
|
|
|
|
|
|
- field.field.widget.widget = SelectMultiple(attrs, choices=choices)
|
|
|
|
|
|
+ if isinstance(field.field.widget, RelatedFieldWidgetWrapper):
|
|
|
|
+ field.field.widget.widget = SelectMultiple(attrs)
|
|
|
|
+ else:
|
|
|
|
+ field.field.widget = SelectMultiple(attrs)
|
|
|
|
+ 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:
|
|
initial_object = model.objects.get(pk=initial_value)
|
|
initial_object = model.objects.get(pk=initial_value)
|
|
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, choices=choices)
|
|
|
|
|
|
+ if isinstance(field.field.widget, RelatedFieldWidgetWrapper):
|
|
|
|
+ field.field.widget.widget = Select(attrs)
|
|
|
|
+ else:
|
|
|
|
+ field.field.widget = Select(attrs)
|
|
|
|
+ field.field.choices = choices
|
|
|
|
|
|
return field
|
|
return field
|
|
|
|
|