0

我不确定 python 对对象使用什么术语 - 请原谅我缺乏 python 知道如何!

实际上,我该怎么做:

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)

所以这样做是从表单字段中获取一个值,计算出我们正在谈论的类型,然后从 db 中从 id 中提取正确的类型。

我不太清楚该怎么做。(这个表格真的是一个评级按钮,所以我并没有一个完整的表格!)

4

2 回答 2

2

您可能想要使用ContentTypes,它是一个包含应用程序中定义的所有不同模型的模型。

于 2012-06-14T19:15:11.330 回答
1

首先,您需要更加小心地从strToObject. 就目前而言,如果type不是“故事”或“帖子”之一,get_object_or_404None作为模型提供,并且您的代码将爆炸。改为执行以下操作:

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.

第三,您应该使用getonrequest.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
于 2012-06-14T19:22:59.003 回答