我正在使用 Django 编写一个应用程序,该应用程序将具有一个用于自动请求等的接口,它不会使用图形/HTML UI。截至目前,我正在使用 aModelForm
来允许诸如
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)
wheresucceed
和fail
are 生成正确响应/日志条目的函数。这部分工作正常。但是,我想编写一个类似的函数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