J'ai besoin de créer un ensemble de requêtes et d'ajouter manuellement certains objets que j'ai obtenus à partir des résultats de différentes requêtes afin de l'afficher dans un tableau. J'utilise xx = set () mais cela ne fait pas l'affaire.
Vous pouvez le faire de l'une des manières suivantes:
from itertools import chain
#compute the list dynamically here:
my_obj_list = list(obj1, obj2, ...)
#and then
none_qs = MyModel.objects.none()
qs = list(chain(none_qs, my_obj_list))
Vous pourriez également faire:
none_qs = MyModel.objects.none()
qs = none_qs | sub_qs_1 | sub_qs_2
Cependant, cela fonctionnerait pas pour les ensembles de requêtes en tranches
Tu ne peux pas faire ça. Un ensemble de requêtes est une représentation d'une requête de base de données. Vous ne pouvez pas y ajouter d'éléments manuellement.
Mais si vous avez besoin d'une collection ordonnée arbitrairement d'instances de modèle, utilisez simplement une liste.
Je suis vraiment en retard à celui-ci, mais pour une référence future, vous pouvez créer un ensemble de requêtes avec tous les filtres pour les objets qui ont une propriété particulière.
Model.objects.filter(foo='bar')
Model.objects.exclude(foo='bar')
def return_queryset_with_desired_objects(self):
qs = SomeModel.objects.all()
wanted_ids = [obj.id for obj in qs if obj.foo]
return self.filter(id__in=wanted_ids]
def return_queryset_without_undesired_objects(self):
qs = SomeModel.objects.all()
unwanted_ids = [obj.id for obj in qs if not obj.foo]
return self.exclude(id__in=unwanted_ids]