2009-04-17 74 views
6

我正在跟蹤模型上的用戶狀態。對於模型「課程」,我的狀態爲「完成」,「學習」,「已觀看」。在我想添加用戶狀態的模型列表的視圖中。做這個的最好方式是什麼?向django模型方法添加請求?

一個想法:將請求添加到模型方法可以做到這一點。那可能嗎?

編輯:我的意思是模板代碼:{{lesson.get_status}},並帶有get_status(self,request)。可能嗎?它不工作(還)。

回答

1

是的,你可以將方法添加到您的模型與請求paramater:

class MyModel(models.Model): 
    fields.... 

    def update_status(self, request): 
     make something with the request... 
+0

是它可以調用從視圖這種方法嗎?這是目標,它不起作用(還)! – 2009-04-17 10:45:29

2

如果您的狀態是改變,你必須分成兩個獨立的部分這個值。

  1. 更新狀態。這必須在視圖函數中調用。然而,真正的工作屬於模型。視圖函數調用模型方法並進行保存。

  2. 顯示狀態。這只是狀態的一些字符串表示。

型號

class MyStatefulModel(models.Model): 
    theState = models.CharField(max_length=64) 
    def changeState(self): 
     if theState is None: 
      theState= "viewed" 
     elif theState is "viewed": 
      theState= "learning" 
     etc. 

查看功能

def show(request, object_id): 
    object= MyStatefulModel.objects.get(id=object_id) 
    object.changeState() 
    object.save() 
    render_to_response(...) 

模板

<p>Your status is {{object.theState}}.</p>