簡體   English   中英

在Django中,如何獲取一個模型的所有實例,而與fk的第一個模型相關的另一個模型的實例不存在?

[英]In Django, how to get all instances of a model where an instance of another model related to the first by fk does not exist?

這對我來說真的很棘手。 我有以下型號:

class Item(models.Model):
      title = models.CharField(max_length=150)
      item_type = models.CharField(choices=item_choices)

class Suggestion(models.Model):
      user = models.ForeignKey(User)
      item = models.ForeignKey(Item)

我需要獲取給定item_type的所有與它以及給定用戶沒有建議的項目。 可以在一個查詢中實現嗎?

非常感謝!

這可以通過.exclude()

items = Item.objects.filter(item_type=item_type).exclude(suggestion__user=user)

這是繼向后有關Suggestion ,並正向關系到User ,並排除任何Item在相關用戶的用戶符合秒。

一種方法是創建帶有與用戶相關建議的項目查詢集,然后將其用作子查詢。

items_suggested_by_user = Item.objects.filter(suggestion__user=user)
item_types = Item.objects.filter(item_type=item_type)
items = item_types.exclude(item__in=items_suggested_by_user)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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