Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django TastyPie资源更新错误_Django_Tastypie - Fatal编程技术网

Django TastyPie资源更新错误

Django TastyPie资源更新错误,django,tastypie,Django,Tastypie,我正在从一个使用JQuery的移动客户端使用tastypieapi更新一个Django模型。 当我发送PUT请求时,我得到一个错误,列“created”不能为null “已创建”列位于要更新的模型中,类型为 models.DateTimeField(auto_now_add=True). 使用tastypieapi更新时,更新会导致将此列设置为null,从而引发错误 直接使用django表单可以成功地更新模型。该错误仅由API更新调用引起。不确定会是什么问题 我尝试将字段更改为(default

我正在从一个使用JQuery的移动客户端使用tastypieapi更新一个Django模型。 当我发送PUT请求时,我得到一个错误,
列“created”不能为null

“已创建”列位于要更新的模型中,类型为

models.DateTimeField(auto_now_add=True).
使用tastypieapi更新时,更新会导致将此列设置为
null
,从而引发错误

直接使用django表单可以成功地更新模型。该错误仅由API更新调用引起。不确定会是什么问题

我尝试将字段更改为(
default=datetime.datetime.now,editable=False,blank=True
) 代替现在自动添加,但它仍然给出了相同的错误。如果有人知道问题所在,请告诉我

以下是部分资源代码:

class AbcResource(ModelResource):

    def obj_update(self, bundle, request=None, **kwargs):
        logger.debug("Update called")
        res = super(AbcResource, self).obj_update(bundle, request)
        signals.abc_updated.send( sender=request, abc=res.obj, user=request.user )
        return res
以下是模型的一部分:

class Abc( models.Model ):
    created = models.DateTimeField(_('created'), auto_now_add=True)
模型没有自定义保存方法

Hers是发送PUT请求的代码:

var url = root + "/api/v1/abc/" + selected_abc + "/" + "?user_key=" + user_guid + "&user_name=" + username + "&format=json";
var abc_data = xmlRequest(url, false);
abc_data["field"] = field_value;
var request = $.ajax({
                     url: url,
                     type: 'PUT',
                     contentType: 'application/json',
                     data: JSON.stringify(abc_data),
                     dataType: "application/json",
                     processData: false
                     })
request.done(function(msg) {
             console.log("Status update pass : " + msg);
             });

request.fail(function(jqXHR, textStatus) {
             console.log("Status update fail : " + jqXHR.responseText);
             console.log(jqXHR);
             });

需要更多信息吗?

在您的模型中,除了DateTime字段之外,还有其他字段吗?使用PUT命令将完全更改数据,因此需要完整的条目。 如果要部分更新字段,请尝试使用PATCH命令

你能发布你的资源代码和你正在为之创建资源的模型吗?你能发布更新工作的确切的“django表单”代码吗。。。我的意思是,我感兴趣的是您是否调用了obj.save()或其他东西,只是想知道究竟是什么在努力解决问题。更新不是来自django表单,而是来自我发布的javascript代码。从表单更新可以很好地工作。另外,我没有任何自定义的obj.save()方法。请尝试以下操作:在调用super(…)之前,在obj_update方法中。obj_update()尝试这两个版本:1)bundle['created']=datetime.datime.now()2)bundle.created=datetime.datetime.now()它仍然抛出相同的错误。我确实在尝试放置时发送了完整的数据。那么,对于编辑特定记录,我应该使用PUT还是PATCH?我尝试使用PATCH,但在调用update时收到相同的错误。您能给我们一个完整的示例,说明您的模型、模型资源和发布的数据吗?