2
考慮以下兩個Django模型:在Django中可以使用PositiveIntegerField作爲外鍵嗎?
class Item(models.Model):
'''
Represents a single item.
'''
title = models.TextField()
class Information(models.Model):
'''
Stores information about an item.
'''
approved = models.BooleanField(default=False)
multipurpose_field = models.PositiveIntegerField()
由於模型的組織方式,我不得不在Information
使用PositiveIntegerField
爲引用的Item
而不是使用ForeignKey
。這使查詢變得更加困難。
我想選擇Information
實例引用的所有項目,approved
設置爲True
。換句話說,我想這樣做:
Information.objects.filter(approved=True)
......除了查詢將返回Information
代替multipurpose_field
引用的Item
實例。
我可能與原始SQL做到這一點:
SELECT app_item.title FROM app_item
LEFT JOIN app_information
ON app_information.multipurpose_field = app_item.id
WHERE app_information.approved = 1
有沒有辦法做到這一點,而不訴諸原始SQL(這往往不是非常便攜)?
你能解釋一下你是「被迫在'使用'PositiveIntegerField'的原因信息'引用一個'Item'而不是使用'ForeignKey'「?這就是使這很難。 –
@PeterDeGlopper:因爲它根據上下文從多個不同模型中引用行。 –
啊 - 我不認爲ORM公開了任何方式直接進行連接。我個人會使用contenttypes框架中可用的通用關係來表示,但這些關係在濾鏡中也不起作用。你可能可以用'extra'來做到這一點,因爲它是尷尬的。 –