簡體   English   中英

Django - 根據對象的外鍵過濾對象但有多種選擇?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM