Je les modèles suivants:Comment utiliser l'ORM de Django pour interroger cet exemple many-to-many?
class Author(models.Model):
author_name = models.CharField()
class Book(models.Model):
book_name = models.CharField()
class AuthorBook(models.Model):
author_id = models.ForeignKeyField(Author)
book_id = models.ForeignKeyField(Book)
Cela étant dit, je suis en train d'imiter cette requête en utilisant Django ORM (sélectionner tous les livres écrits par un auteur spécifique, en notant que les auteurs peuvent avoir de nombreux livres et livres peuvent avoir de nombreux auteurs):
SELECT book_name
FROM authorbook, book
WHERE authorbook.author_id = 1
AND authorbook.book_id = book.id
J'ai lu this FAQ page sur le site Django, mais avant que je modifie ma structure de modèle et supprimer AuthorBook, j'étais curieux de savoir si je pouvais imiter cette requête en utilisant la structure actuelle .
Argh. Merci - le cerveau ne fonctionne qu'à moitié aujourd'hui. :) – Huuuze
La réponse de webjunkie semble meilleure. J'apprends juste Django moi-même. –
En général, il n'y a aucune raison de mentionner explicitement le champ id dans l'ORM. En supposant que vous avez une instance Auteur, vous voudriez Book.objects.filter (authorbook__author = author). Mais un ManyToManyField est la voie à suivre, bien sûr. –