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



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

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

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

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

谢谢

你可能想看看ModelForms

此方法将起作用,尽管您必须小心同时添加模型字段/ajax参数才能使其工作

鉴于:

表格1

<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()

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

参数 = 字典(请求。后)

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

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

如果您的参数不对齐,代码将失败。