2011-01-16 5 views
1
params['blog_posts'] = Content.objects.get(user = blah) 
params['other_vars'] = "other stuff" 
params['votes'] = 4245 

if request.GET.get("format") == "json": 
    response = json.dumps(params) 
    return HttpResponse(response) 
else: 
    return render_to_response("posts.html", params, RequestContext(request)) 

、私はこのようなものを行う:DjangoでこのようなデータベースORMの状況をどうやって処理するのですか?私のテンプレートで

{% for p in blog_posts %} 
    The author is: {{ p.user.get_profile.about_me }} 
{% endfor %} 

あなたが見ることができるように、私は本当にDjangoの外部キー/データベースモデルを利用しています。問題は...これらのすべてのモデルをJSONにどのように撃つのですか?

私はdjango.core.serializersを使用してblog_postsをシリアル化しても、JSONは.userモデルが含まれていないでしょう、そしてもちろん.get_profileモデルは含まれません。

答えて

3

一つのオプションは、あなたのモデルクラス自体が自身をシリアライズする方法の知識が含まれていることです。

class MyBaseModel(BaseModel): 
    def serialize(): 
     abstract # this will throw an error if it's called without being overwritten 

class Post(MyBaseModel): 
    title = db.stringProperty() 
    body = db.textProperty() 
    user = db.referenceProperty(User) 

    # etc etc etc 
    def serialize(self): 
     return { 
      'title' : self.title, 
      'body' : self.body, 
      'user' : self.user.serialize() 
      # etc 
     } 
+0

「MyBaseModel」とは何ですか?私はそれをしません。私はちょうど:クラスコンテンツ(models.Model): – TIMEX

+0

ああ、私は通常、フレームワークのベースと私の真のモデルの間に自分のベースモデルを挿入するので、私は好きな場合、私はすべてのクラスを変更することができます。たとえば、save()を実行すると、updated_atおよびcreated_atを現在の時刻に設定することが好きです。 –

関連する問題