Django 显示来自Backbone.js相关对象的信息

Django 显示来自Backbone.js相关对象的信息,django,django-models,backbone.js,tastypie,backbone-relational,Django,Django Models,Backbone.js,Tastypie,Backbone Relational,在后端,当这些属性存储在PostgreSQL数据库中的单独Django模型上时,在my Backbone.js wired前端显示相关对象信息的最佳方式是什么 我目前正在使用Django、Tastypie、Django-Tastypie、Backbone.js、Backbone-Relational和handlebar.js模板。我乐于以不同的方式做事,如果有必要或更有效的话,我愿意学习Riak等新技术 在前端,我尝试使用标准Django模板做的事情非常简单:在一篇文章和该文章的作者上显示标签列

在后端,当这些属性存储在PostgreSQL数据库中的单独Django模型上时,在my Backbone.js wired前端显示相关对象信息的最佳方式是什么

我目前正在使用Django、Tastypie、Django-Tastypie、Backbone.js、Backbone-Relational和handlebar.js模板。我乐于以不同的方式做事,如果有必要或更有效的话,我愿意学习Riak等新技术

在前端,我尝试使用标准Django模板做的事情非常简单:在一篇文章和该文章的作者上显示标签列表

在后端,我有一个
Post
模型和
Tag
User
UserProfile
(作者)模型
Users
UserProfiles
是1对1,
Post
UserProfile
有关系,但我想显示的内容存储在
User
模型的
username
属性下。目前,这需要进行两次艰苦的查找,以获取每篇文章的作者用户名。
Post
模型:

class Post(models.Model):
author=models.ForeignKey(UserProfile)
topic=models.ForeignKey(主题)
标记=型号。ManyToManyField(标记)
content=models.TextField()
title=models.CharField(最大长度=250)
slug=models.SlugField()
description=models.TextField()
在《咖啡脚本》中,我有我的骨干模特。目前,我正在尝试在初始化Post模型时获取相关的author和tag对象。我当前的代码非常草率,很抱歉,我的javascript foo仍在开发中

类用户扩展主干。关系模型
类UserProfile扩展了Backbone.RelationalModel
urlRoot:“/api/v1/profile/?format=json”
类PostTag扩展了Backbone.RelationalModel
初始化:->
this.get('tag')。关于'change',(model)=>
this.get('post').trigger('change:tag',model)
class标记扩展了Backbone.RelationalModel
urlRoot:“/api/v1/tag/?format=json”
idAttribute:'id',
关系:[{
类型:Backbone.HasMany,
键:“post_标签”,
relatedModel:PostTag,
反向关联:{
键:'标记',
includeInJSON:“id”,
},
}],
类Post扩展了Backbone.RelationalModel
idAttribute:'id',
关系:[{
类型:Backbone.HasMany,
键:“post_标签”,
relatedModel:PostTag,
反向关联:{
关键字:“post”,
includeInJSON:“id”,
},
}]
初始化:->
@.get('tags').forEach(@addTag,@)
@.addAuthor()
@.关于“更改:标记”(型号)->
console.log('related tag=%o updated',model)
addAuthor:()->
profile_id=@.get('author')
如果app.UserProfiles.get(profile\u id)?
profile=app.UserProfiles.get(profile\u id)
user=app.Users.get(profile.user)
@.set('author\u name',user.get('username'))
其他的
profile=新的app.UserProfile(profile\u id)
app.UserProfiles.add(配置文件)
profile.fetch(成功:(模型,响应)=>
user\u id=profile.get('user')
如果app.Users.get(用户id)?
user=app.Users.get(用户id)
user.fetch(成功:(模型,响应)=>
console.log(user.get('username'))
@.set('author\u name',user.get('username'))
)
console.log(“现有用户”+用户id)
console.log(user.get('username'))
#@.set('author\u name',user.get('username'))
其他的
user=new app.user('resource\u uri':user\u id)
app.Users.add(用户)
console.log(“新用户”+用户id)
user.fetch(成功:(模型,响应)=>
console.log(user.get('username'))
@.set('author\u name',user.get('username'))
)
)
addTag:(tag_id)->
控制台日志(标签id)
如果app.Tags.get(tag\u id)?
tag=app.Tags.get(tag\u id)
console.log(“标记”+标记)
其他的
console.log(“不存在”)
控制台日志(标签id)
tag=newapp.tag({'id':tag_id})
tag.fetch()
app.Tags.add(标签)
post_tag=新建app.postTag({
“tag”:tag\u id,
'post':@.get('resource_uri')
})
@.get('post_标记')。add(post_标记)

这段代码实际上可以很好地获取和存储相关对象,但它非常混乱,我相信一定有更好的方法。此外,我无法找到一种方法来访问存储的标记名,以显示在我的
handlebar.js
模板中。

在撰写本文时,我发现了相关的问题

既然我已经写了这个问题,我想我不妨把它贴出来,以防它对任何人都有用

答案很简单,只需将
full=True
添加到我的
tastype
资源中。然后,我可以去掉
addTags
addAuthor
函数,因为我不需要保存或更新相关对象,所以上面线程中的其余答案对我来说是不必要的