如何从request.POST保存Django模型?

时间:2010-10-23 22:47:43

标签: django django-models django-piston

我正在尝试使用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'],
)

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

首先,我认为你明智地将你的PK变成整数会很高兴。

        loc = Location.objects.get(pk=int(attrs['location']))

其次,你应该使用表格。

  1. 它会为您验证字段。

  2. 它将从Form对象创建Model对象。

  3. 阅读本文。 http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/