2012-06-14 63 views
0

我不確定python使用什麼術語的對象 - 原諒我缺乏python知道如何!django我可以將模型的類型存儲在變量中以用於方法調用嗎?

實際上,我怎麼可以這樣做:

strToObject = {'story':Story,'post':Post} 

def post(self,request): 
    type = request.POST['theTypeInTheForm'] 
    id = request.POST['idInTheForm'] 
    get_object_or_404(strToObject.get(type,None),id) 

所以這次做的是從一個表單字段的值是什麼,工作了,我們正在談論的是什麼類型,然後再從拉動分貝正確的類型從id。

我不知道該怎麼做。 (該表單實際上是用於評級按鈕的,所以我並沒有真正擁有整個表單)

回答

2

您可能想要使用ContentTypes,它是包含應用中定義的所有不同模型的模型。

+0

啊。這是django設立的一個非常方便的系統。 – bharal

1

首先,您需要更加小心地從strToObject獲取模型。現在,如果type不是「story」或「post」之一,get_object_or_404將作爲模型提供給None,並且您的代碼將炸燬。做這樣的事情,而不是:

model = strToObject.get(type) # `None` is the "default" default 
if model is not None: 
    get_object_or_404(model, id=id) 

其次,正如我在上面的代碼中所指出的,你不能僅僅通過id爲的是get_object_or_404,你需要指定的值應該枕着模型什麼領域因此,id=id

三,您應該使用getrequest.POST得到typeid。因爲它是現在,如果他們的形式無論出於何種原因不是,你的代碼將炸燬與IndexError

type = request.POST.get('theTypeInTheForm') 
id = request.POST.get('idInTheForm') 

然後,你應該檢查值不None繼續之前:

if type is not None and id is not None: 
    # the rest of your code 
+0

嘿!感謝代碼審查 - 我的意思是。他們是你提出的很好的觀點。我必須與丹尼爾的答案一起去 - 因爲它回答了我問的問題,但我很欣賞你給予的很多的投入! – bharal

相關問題