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