2
我有一個django模型繼承的問題。這是我有:Django模型繼承和Meta類
class Room(models.Model):
name = models.CharField(max_length=32)
class Container(models.Model):
size = models.IntegerField(default=10)
...
class BigBox(Container):
room = models.ForeignKey(Room)
...
class SmallBox(Container):
big_box = models.ForeignKey(BigBox)
...
class Stuff(models.Model):
container = models.ForeignKey(Container)
...
class Meta:
ordering = ('container__???__name',)
所以,這一點,我能夠把一些東西放在大箱子或小盒子,這是在大箱子。
我怎樣才能知道我的東西字段'容器'的類型,以訪問房間的名稱?我知道我可以寫
container__big_box__room__name
和
container__room__name
,但我想是這樣
container__get_room__name.
這可能嗎?
謝謝,
Alex。
我不明白我的small_box可能在不同的房間,她的big_box,因爲small_box鏈接到一個特定的big_box。 你的層次結構非常酷,但是,我的small_box必須是一個大的。我希望這是由數據庫保存,而不是保存方法。 我希望我很清楚,謝謝你,並問我如果你想要一些精度的問題。 Alex。 – Alex 2013-04-26 14:38:37
@亞歷克斯對不起。我對不同房間的反思是錯誤的。我的建議層次結構實際上就是這種情況。這具有冗餘字段的缺點,因爲每個ContainableContainer都會有一個指向其根目錄房間的字段。 – 2013-04-26 14:45:10
沒問題;)是的,這是我第一次嘗試,並且如您所做的那樣,我忽略了保存方法。但是我的實習導師會更喜歡這個由數據庫來處理。實際上,實際的問題是:是否有一種方法可以在字段排序中使用函數,例如ordering =('box__get_room()__ name'))?我在這個問題上沒有找到任何東西,所以可能不是。我會和我的導師重新考慮你的方法,也許我會在星期一帶着好消息回來;)謝謝你的時間,祝你有美好的一天。 – Alex 2013-04-26 14:52:05