borne_gauche = aujourdhui
borne_droite = aujourdhui
elif v == STATUT_INACTIF:
+ # dans le cas d'une FK, on retire des inactifs ceux qui ont une FK active
+ if prefix != "":
+ q_range = self.get_q_range(prefix, aujourdhui, aujourdhui)
+ id_actifs = [o.id for o in qs.filter(q_range).distinct()]
+ qs = qs.exclude(id__in=id_actifs)
borne_droite = aujourdhui
elif v == STATUT_FUTUR:
borne_gauche = aujourdhui
q = q & self.get_q_inconnu(prefix)
q_range = self.get_q_range(prefix, borne_gauche, borne_droite)
- qs = qs.filter(q & q_range)
-
+ qs = qs.filter(q & q_range).distinct()
# Use select_related() if one of the list_display options is a field
# with a relationship and the provided queryset doesn't already have
return qs.distinct()
else:
return qs
-
- def get_query_string(self, new_params=None, remove=None):
- if new_params is None: new_params = {}
- if remove is None: remove = []
- p = self.params.copy()
- for r in remove:
- for k in p.keys():
- if k.startswith(r):
- del p[k]
- for k, v in new_params.items():
- if v is None:
- if k in p:
- del p[k]
- else:
- p[k] = v
- return '?%s' % urlencode(p)