我一直在做一个需要大量用户输入和处理的 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)
如果您的参数不对齐,代码将失败。