如何使用belongsTo关系创建一个记录(在ember.js中)并通过tastypie将其保存在django中?

时间:2014-07-28 12:48:03

标签: jquery json django ember.js tastypie

所以我正在做一个聊天应用程序(在django的ember.js和backend中的前端)当然必须发送消息。

我在ember.js中的消息模型如下所示:

Messages.Message = DS.Model.extend({
    body: attr('string'),
    user: DS.belongsTo('user'),
    time: attr('date'),
    recipient: DS.belongsTo('recipient'),
});

我尝试使用此示例中的代码创建并保留新邮件:http://emberjs.com/guides/models/creating-and-deleting-records/

所以我在控制器中的saveMessage操作如下所示:

var store = this.store;

var message = store.createRecord('message', {
    body: 'Lorem ipsum'
});

store.find('recipient', 2).then(function(recipient) {
    message.set('recipient', recipient);
});

message.save();

但是生成的JSON属性'收件人'为null,因此服务器返回错误500,因为此字段不能为空。

JSON应如下所示:

{'body': 'loremipsum', 'recipient': {'username','some name'}, 'time': null, 'user': null}

你知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

find是异步的,并返回一个promise。这意味着传递给then的匿名函数很可能在您调用save后执行。将保存移到then中,以便在保存之前附加了收件人。

var store = this.store;

var message = store.createRecord('message', {
    body: 'Lorem ipsum'
});

store.find('recipient', 2).then(function(recipient) {
    message.set('recipient', recipient);
    message.save();
});