Supposons que j'ai un schéma comme ci-dessous:ensemble de données de filtre n'ayant une valeur
Book | Author
-------------
B1 | A1
B1 | A3
B1 | A2
B2 | A5
B2 | A4
B2 | A3
B3 | A5
B3 | A6
B3 | A1
B4 | A1
B4 | A5
B4 | A6
avec ci-dessous le modèle:
class Books(models.Model):
author = models.CharField(
max_length=100,
blank=False,
null=False,
db_index=True,
verbose_name=_('authors'),
)
book = models.CharField(
max_length=50,
blank=False,
null=False,
db_index=True,
verbose_name=_('book'),
)
book_type = models.CharField(
max_length=50,
blank=False,
null=False,
default="regular"
)
flavour = models.CharField(
max_length=10,
blank=False,
null=False,
verbose_name=_('flavour'),
)
cost = models.IntegerField()
status = models.CharField(
max_length=100,
null=True,
blank=True,
db_index=True,
)
et je veux filtrer tous les livres dont l'auteur est pas A1 (B2 dans ce cas)
Ceci est simple SQL en utilisant group by
et not having
clause, ce que j'ai du mal à faire est de le faire en utilisant django queryset et annoter. La plupart des annotate fonctionnent autour de count
que je ne peux pas adapter dans ce cas particulier.
tout pointeur est utile, merci! :)
Pouvez-vous publier les modèles Django? – solarissmoke
@solarissmoke: ajouté – NoobEditor