Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 在backbone.js中创建与修改_Django_Backbone.js_Tastypie - Fatal编程技术网

Django 在backbone.js中创建与修改

Django 在backbone.js中创建与修改,django,backbone.js,tastypie,Django,Backbone.js,Tastypie,这是我第一个使用主干网和RESTAPI的应用程序,当涉及到创建编辑时,我对一些特定场景有点困惑。所以,如果模型在服务器上退出,它将进行编辑,如果它不退出,它将创建 当我在模型中传递唯一标识符时,它知道它存在,但如果我传递的是没有唯一标识符的现有数据组合,它总是认为它应该创建。我不确定这应该在客户端还是服务器端解决 例如: var exportationMod = new Backbone.Model({ 'asset': '/api/v1/asset/'+this.assetID+'/', 'e

这是我第一个使用主干网和RESTAPI的应用程序,当涉及到创建编辑时,我对一些特定场景有点困惑。所以,如果模型在服务器上退出,它将进行编辑,如果它不退出,它将创建

当我在模型中传递唯一标识符时,它知道它存在,但如果我传递的是没有唯一标识符的现有数据组合,它总是认为它应该创建。我不确定这应该在客户端还是服务器端解决

例如:

var exportationMod = new Backbone.Model({ 'asset': '/api/v1/asset/'+this.assetID+'/', 'export_configuration': '/api/v1/exportconfiguration/'+this.model.get('id')+'/' });
exportationMod.url = '/api/v1/exportation/';
exportationMod.save();

好的,那么服务器正在使用django+tastypi运行。客户端是否应该首先在服务器上进行额外的查询来验证这一点(也许有一种方法可以设置像mysql这样的唯一键的组合),或者是否有另一种设置可以让它进行编辑而不是创建?

如果您在没有唯一id的情况下向服务器传递数据,服务器如何知道要更新什么

如果对您的情况有意义,您可以覆盖模型中的
isNew()

var MyModel = Backbone.Model.extend({
   idAttribute: 'somethingUnique',
   url: '/api/v1/exportation/',
   isNew: function(){
      // return true if you want create (POST),
      // return false if you want update (PUT)
   }
});
默认情况下,它如下所示(对于上面的模型,this.id将是上面的idAttribute值):

如果您想编辑服务器上已经存在的内容,您应该在编辑/保存之前先获取它。此外,如果存在一些不称为“id”的唯一id,您也可以在模型上覆盖它(参见上文)

// A model is new if it has never been saved to the server, and lacks an id.
isNew: function() {
  return this.id == null;
},