1

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

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

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

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

谢谢

4

2 回答 2

2

你可能想看看ModelForms

于 2012-11-19T22:13:19.817 回答
0

此方法将起作用,尽管您必须小心同时添加模型字段/ 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()

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

参数 = dict(request.POST)

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

或者

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

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

于 2012-11-20T16:30:45.863 回答