[英]Django - Filter objects based on their ForeignKey but with multiple choices?
我正在開發一個應用程序,其中每個User
都與他或她所說的語言列表相關聯。 該應用程序是關於書籍的,每Book
都有一個語言字段,代表這本書所用的語言。
我正在嘗試獲取以用戶語言s編寫的所有書籍。 因此,如果用戶說英語和西班牙語,我想檢索所有用英語和西班牙語編寫的書籍。
我的代碼:
用戶/模型.py :
class User(AbstractUser):
languages = models.ManyToManyField(Language)
書籍/模型.py :
class Book(models.Model):
language = models.ForeignKey(Language)
book/views.py :這段代碼實際上不起作用,但我發布它是為了希望傳達我想要實現的目標:
class BooksView(APIView):
def get(self, request):
books = Book.objects.filter(language=request.user.languages)
return books
取而代之的Book.objects.filter(language=request.user.languages)
怎么能根據並非一種語言,但多國語言我過濾的書?
要使用多個值進行過濾,您應該使用__in
過濾器 - 它會在可迭代對象中查找特定查詢,因此在您的情況下它看起來像這樣
class BooksView(APIView):
def get(self, request):
books = Book.objects.filter(language__in=request.user.languages.all())
return books
順便說一句,從邏輯上講,“用英語和西班牙語寫的書”這句話意味着該特定的書必須以兩個版本寫成
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.