我正在使用Django编写一个应用程序,该应用程序将具有用于自动化请求等的界面,该界面不会使用图形/ HTML界面。截至目前,我使用的是ModelForm
允许请求,如Django部分更新没有提交表单
POST /addFoo?a=1&b=Hello
这将创造一个新的Foo
这些字段和值,并将其添加到数据库中。视图功能看起来像
def addFoo(request):
form = FooForm(request)
if form.is_valid():
foo = form.save()
return succeed(id=foo.id)
else:
return fail(code=0, error=form.errors)
其中succeed
和fail
是函数生成正确的应对/日志条目。这部分工作正常。然而,我想写一个类似功能editFoo
使得如果存在与ID 1的对象,然后
POST /editFoo?id=1&a=42
将该对象的a
字段更改为42.视图函数作为我现在有它是
def editFoo(request):
try:
foo = models.Foo.objects.get(id=request['id'])
except:
return fail(0, error=u'No such object exists!')
form = FooForm(request, instance=foo)
if form.is_valid():
form.save()
return succeed()
else:
return fail(code=1, error=form.errors)
但是,当我测试这个form.errors包含错误消息,大意是指定未指定的字段是必需的。由于这些请求的发起将由客户端(即,我不能预加载HTML <form>
供他们编辑),我似乎无法找到一种方法来使这种视图的工作。
在此先感谢您的建议。
编辑:型号和形式非常简单:
class Foo(Model):
a = IntegerField()
b = CharField(max_length=23)
和
class FooForm(ModelForm):
class Meta:
model = Foo
写的模型和的ModelForm代码,请 – lalo
没有太多的事情,但补充。 – Actorclavilis
这是“b”重新调整? – lalo