Beaucoup de beaucoup de gens et comment obtenir un queryset de queryset
J'ai des modèles suivants:
class Product(models.Model):
name = CharField(max_length=30)
class Store(models.Model):
name = CharField(max_length=30)
product = models.ManyToManyField(Product)
Comment obtenir Store
s avec un produit nommé product_name
et aussi, bénéficiez de tous les produits (à l'exception du produit avec le nom product_name
) ? Est-il possible de le faire en une seule requête?
Dans SQL brut, il serait simple JOIN
s. Vous ne savez pas comment la mettre en œuvre par Django.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez réellement faire ces choses avec Django en raison de il est paresseux queryset d'évaluation. Django
in
champ de recherche accepte les deux listes et querysets. Le suivant va créer un imbriquée code SQL:Ici sont les Django
in
docs.Vous devriez être en mesure de filtrer les magasins basé sur un attribut de Produit, puis prefetch_related des objets récupérés.
Cela devrait frapper la base de données le moins de temps à réaliser ce que vous êtes à la recherche pour - deux fois.
La documentation complémentaire peut être trouvé ici.
Obtenir dans les Magasins avec un produit nommé "product_name" :
Obtenir tous les produits sauf les produits avec le nom "product_name":