下面是一個精簡的模型和相關的方法。我正在尋找一種簡單的方法來執行查詢,以便在單個答案中獲得所有必需的信息,而無需重新查詢所有內容。這裏的挑戰是value
取決於value_id的簽名。Django QuerySets - 帶類方法
class Property(models.Model):
property_definition = models.ForeignKey(PropertyDefinition)
owner = models.IntegerField()
value_id = models.IntegerField()
def get_value(self):
if self.value_id < 0: return PropertyLong.objects.get(id=-self.value_id)
else: return PropertyShort.objects.get(id=self.value_id)
眼下獲得「價值」我需要這樣做:
object = Property.objects.get(property_definition__name="foo")
print object.get_value()
有人可以提供解決這個更清潔的方式或者是「好」就夠了嗎?理想情況下,我只想簡單地做到這一點。
object = Property.objects.get(property_definition__name="foo")
object.value
感謝
你有沒有考慮過使用[generic relations](https://docs.djangoproject.com/en/1.3/ref/contrib/contenttypes/#generic-relations)? –
嘿丹尼爾!感謝回覆 - 我沒有考慮過它。在閱讀文檔它聲明我應該使用(通常)PositiveIntegerField。我如何處理這個簽名? – rh0dium
那麼我的觀點是你不需要使用正/負邏輯,因爲你可以使用'content_type'來區分你的長和短屬性。 –