寻找一种更简洁的方法将ajax POST数据保存到django模型并避免硬编码进行保存?

时间:2012-11-19 21:57:24

标签: ajax django models save

我一直在研究需要大量用户输入和处理的django项目,并且厌倦了对视图中的数据进行硬编码以便将其保存到我的模型中,如下所示。

mymodel = TheModel.objects.get(id=model.id)
mymodel.name = request.POST.get('name')
mymodel.zip  = request.POST.get('zip')
...
mymodel.save()

除了上面使用的两个模型属性外,有时最多需要保存25个。

我正在使用ajax序列化表单并将它们发送到我保存的视图中。我正在寻找最简洁的方法来解决这个问题。代码越少越好,我愿意重新格式化我的模型,如果有一种方法可以显着缩短我现在的代码行数。

由于

2 个答案:

答案 0 :(得分:2)

您可能需要查看ModelForms

答案 1 :(得分:0)

此方法可行,但您必须小心添加模型字段/ ajax参数才能使其正常工作

假设:

Form1中

<form method="post">
  <input name="parameter1" />
  <input name="parameter2" />
  <input name="parameter3" />
</form>

编写javascript代码,以便通过网络传输的数据看起来像这个JSON(表单序列化) 可能不会工作)

{ parameter1 : "some data", "parameter2" : "some data", parameter3 : "some data" }

然后,你有一个看起来像这样的django模型

class MyModel(models.Model):
    parameter1 = models.StringField()
    parameter2 = models.StringField()
    parameter3 = models.StringField()

您可以使用以下代码保存/更新:

params = dict(request.POST)

m = MyModel.objects.create(**params)

m = MyModel.objects.get(id=ID)
m.update(force_update=False,**params)

如果您的参数没有对齐,代码将会失败。