mam następujące modele:Jak użyć ORM Django do wysłania zapytania do tego przykładu "wiele-do-wielu"?
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)
Z tym mówi, staram się naśladować tej kwerendy przy użyciu Django ORM (zaznacz wszystko z książek napisanych przez konkretnego autora, zwracając uwagę, że autorzy mogą mieć wiele książek i książek może mieć wielu autorów):
SELECT book_name
FROM authorbook, book
WHERE authorbook.author_id = 1
AND authorbook.book_id = book.id
Czytałem this FAQ page na stronie internetowej Django, ale zanim zmodyfikować moje struktury modelu i usunąć AuthorBook, byłem ciekaw, czy mogę naśladować tego zapytania przy użyciu obecnej struktury .
Argh. Dzięki - mózg tylko w połowie działa dzisiaj. :) – Huuuze
odpowiedź webjunkie wydaje się być lepsza. Sam się uczyłem z Django. –
Ogólnie nie ma powodu, aby wyraźnie wskazywać pole identyfikatora w ORM. Zakładając, że masz instancję autora, potrzebujesz Book.objects.filter (authorbook__author = author). Ale oczywiście jest też droga ManyToMany. –