我正在尝试使用POST数据querydict从django模型中保存新对象。这是PISTON处理程序的一部分。我已经在很多例子中看到了这一点,但我无法让它发挥作用。
这是我的代码:
class FestHandler(BaseHandler):
model = Deal
def create(self, request):
"""
Creates a new fest.
"""
attrs = self.flatten_dict(request.POST)
postcopy = request.POST.copy()
if self.exists(**attrs):
return rc.DUPLICATE_ENTRY
else:
loc = Location.objects.get(pk=attrs['location'])
postcopy['location'] = loc
fest = Fest(postcopy)
fest.save()
return fest
以下是我每次收到的错误:
Exception was: int() argument must be a string or a number, not 'QueryDict'
我意识到错误意味着什么,所以基本上我问我如何通过传入整个POST字典来保存新的“Fest”,而不必每次都手动输入键:
loc = Location.objects.get(pk=attrs['location'])
fest = Fest(
location=loc,
name=attrs['name'],
description=attrs['description'],
details=attrs['details'],
)
感谢您的帮助!
答案 0 :(得分:2)
首先,我认为你明智地将你的PK变成整数会很高兴。
loc = Location.objects.get(pk=int(attrs['location']))
其次,你应该使用表格。
它会为您验证字段。
它将从Form对象创建Model对象。
阅读本文。 http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/