Ich habe folgende Modelle:Wie verwende ich das Django ORM, um dieses Viele-zu-Viele-Beispiel abzufragen?
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)
Mit diesem wird gesagt, ich versuche diese Abfrage mit dem Django ORM zu emulieren (wählen Sie alle Bücher eines bestimmten Autors geschrieben, unter Hinweis darauf, dass Autoren viele haben Bücher und Bücher können viele Autoren) haben:
SELECT book_name
FROM authorbook, book
WHERE authorbook.author_id = 1
AND authorbook.book_id = book.id
I this FAQ page auf der Django Website gelesen habe, aber bevor ich meine Modellstruktur ändern und entfernen AuthorBook, war ich gespannt, ob ich die aktuelle Struktur emulieren könnte diese Abfrage mit .
Argh. Danke - Gehirn funktioniert heute nur halb. :) – Huuuze
webjunkie Antwort scheint besser. Ich habe gerade Django selbst gelernt. –
Im Allgemeinen gibt es keinen Grund, das ID-Feld im ORM explizit zu erwähnen. Wenn Sie eine Autoreninstanz haben, möchten Sie Book.objects.filter (authorbook__author = author). Aber ein ManyToManyField ist natürlich der richtige Weg. –