Autoselect (senza propagazione su altri campi)
parent
6a6f956785
commit
ad4b9dc86b
|
|
@ -61,11 +61,14 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
|||
def get_queryset(self):
|
||||
"""Return queryset based on ModelAdmin.get_search_results()."""
|
||||
qs = super().get_queryset().only()
|
||||
self.autoselect = False
|
||||
# print('Prima:',qs.query,'\n\n')
|
||||
if hasattr(self, 'linkedfields'):
|
||||
drilldown_filter_conditions = Q(**self.drilldown_filter_data)
|
||||
qs = qs.annotate(ddok=Max(Case(When(drilldown_filter_conditions, then=Value(
|
||||
1)), default=Value(0)))).order_by('-ddok', *qs.query.order_by)
|
||||
if qs.filter(ddok=1).count() == 1:
|
||||
self.autoselect = True
|
||||
# print('Dopo:',qs.query,'\n\n')
|
||||
else:
|
||||
qs = qs.annotate(ddok=Value(1))
|
||||
|
|
@ -76,7 +79,10 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
|||
Convert the provided model object to a dictionary that is added to the
|
||||
results list.
|
||||
"""
|
||||
return {"id": str(getattr(obj, to_field_name)), "text": str(obj), "ddok": obj.ddok}
|
||||
out = {"id": str(getattr(obj, to_field_name)), "text": str(obj), "ddok": obj.ddok}
|
||||
if self.autoselect and obj.ddok == 1:
|
||||
out['autoselect'] = True
|
||||
return out
|
||||
|
||||
|
||||
class DrillDownAutocompleteMixin(AutocompleteMixin):
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@
|
|||
if (linkedfields.hasOwnProperty(i)) {
|
||||
var remote_field = linkedfields[i];
|
||||
var field_id = element.dataset.select2Id;
|
||||
var remote_id = field_id.slice(0,field_id.length-field_name.length)+remote_field;
|
||||
var value = document.querySelectorAll('[data-select2-id=' + remote_id +'].admin-autocomplete')[0].value;
|
||||
var remote_id = field_id.slice(0, field_id.length - field_name.length) + remote_field;
|
||||
var value = document.querySelectorAll('[data-select2-id=' + remote_id + '].admin-autocomplete')[0].value;
|
||||
if (value !== '') {
|
||||
//console.log(field + '=' + value);
|
||||
linkedfields_obj[remote_field] = value;
|
||||
|
|
@ -49,6 +49,13 @@
|
|||
styleClass = 'drilldown_ko';
|
||||
}
|
||||
container.classList.add(styleClass);
|
||||
if (item.hasOwnProperty('autoselect')) {
|
||||
if ($(element).select2('data').length == 0) {
|
||||
$(element).select2("trigger", "select", {
|
||||
data: item
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
return $('<span class="' + styleClass + '"></span>').text(item.text);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue