2013-01-02 227 views
0

我想有一個模型領域,將返回另一個模型的最新相關。django模型領域喜歡視圖

一個示例 -

class Thing(models.Model): 
    name = models.CharField(max_length=200) 
    state = models.ForeignKey(State, query=latest) #pure fantasy 
class State(models.Model): 
    change = models.DateTimeField(auto_now_add=True) 
    thing = models.ForeignKey(Thing) 

假設模型類國家有多對一關係的事情。

下列人士提供SOME_THING = Thing.object.all()[0]

我想some_thing.state是國家的實例有實例的事情,我在最近的State.change值手。

我想在Django模型級別指定一個實例變量,它可以完成我上面描述的內容。我能想到的兩種方法可以做到這一點,但也不是在這個級別:

  1. 在實際DB級 - 創建一個視圖,並關閉Django的分貝 同步 (http://stackoverflow.com/問題/ 507795/can-i-use-a-database-view-as-a-model-in-django)
  2. 視圖級別 - 當我創建新狀態行時手動將該行設置爲相關的Thing.state實例。
+0

不會實施自定義模型方法是第三選擇嗎? – ppetrid

回答

0

您不能擁有數據庫級別的動態外鍵。但是,您可以擁有一種屬性或方法來爲您捕獲您的物品:

class Thing(models.Model): 
    name = models.CharField(max_length=200) 

    @property 
    def state(self): 
     return State.objects.latest('change') 

class State(models.Model): 
    change = models.DateTimeField(auto_now_add=True) 
    thing = models.ForeignKey(Thing)