我一直在研究需要大量用户输入和处理的django项目,并且厌倦了对视图中的数据进行硬编码以便将其保存到我的模型中,如下所示。
mymodel = TheModel.objects.get(id=model.id)
mymodel.name = request.POST.get('name')
mymodel.zip = request.POST.get('zip')
...
mymodel.save()
除了上面使用的两个模型属性外,有时最多需要保存25个。
我正在使用ajax序列化表单并将它们发送到我保存的视图中。我正在寻找最简洁的方法来解决这个问题。代码越少越好,我愿意重新格式化我的模型,如果有一种方法可以显着缩短我现在的代码行数。
由于
答案 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)
如果您的参数没有对齐,代码将会失败。