0
我有一組GeneraricForeignKey字段的項目,我想通過一組對象來獲取附加到這些對象的項目,就像這樣。我正在考慮在所有記錄上做一個查詢集,然後添加過濾器以獲取附加到列表中對象的項目。Django:後續OR過濾器
像這樣:
models.py:
from django.contrib.contenttypes.models import ContentType
class Item(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(db_index=True)
content_object = generic.GenericForeignKey('content_type', 'object_id')
views.py:
my_objects = list()
my_objects.append(SomeObject.objects.get(id=1))
my_objects.append(SomeObject.objects.get(id=2))
items = Item.objects.all()
for obj in my_objects:
items = items.filter(content_type=ContentType.objects.get_for_model(obj), object_id=obj.id)
return items
當我看到查詢此,列表中的每個對象單獨的過濾器是越來越邏輯與來過濾。有沒有一種方法可以合乎邏輯或呢?我嘗試這樣做:
from django.db.models import Q
items = Item.objects.all()
for obj in my_objects:
items = items.filter(
Q(id__in=items)
| Q(content_type=ContentType.objects.get_for_model(obj), object_id=obj.id)
)
,但它實際上並沒有排除任何記錄,因爲還是允許他們在
真棒,謝謝,我不知道如何構建過濾器,不知道我可以稱它爲Q(),然後添加到它。試着用字符串構造,然後eval(),但我知道這不是最合適的解決方案。完美的作品! – Furbeenator
太棒了!快樂它幫助:) – rafaponieman