2016-08-01 3 views
1

私は現在、models.pyとMySQLデータベースからJSONデータ/オブジェクトを取得し、そのJSONオブジェクトをテンプレートに送信できます。カスタムSQLを使用してMySQLからデータを取得し、それをJSONオブジェクトにしてテンプレートに送信するにはどうすればよいでしょうか。私は基本的にmodels.pyを使いたくないのです。ここで私はmodels.pyを使用していたとき、私は私のviews.pyに持っているものです。モデルの代わりにカスタムSQLを使用してJSONオブジェクトをテンプレートに返す

def startpage(request): 
    platforms = Platform.objects.select_related().values('platformtype') 
    return render(request, 'HTML1.html', {'platforms_as_json' : json.dumps(list(platforms)),}) 

これは私がこれまで持っているものです。

def my_custom_sql(self): 
    cursor = connection.cursor() 
    cursor.execute("SELECT platformtype FROM Platform", [self.Platform]) 
    row = cursor.fetchone() 
    return row 

どのように私は同じことを行うことができるだろう私のビュー内でmodels.pyを使用せずにカスタムSQLクエリを使用することを除いては?あなたがのインスタンスをしたい場合

def startpage(request): 
    platforms = my_custom_sql() 
    return render(request, 'Html1.html', {'platforms_as_json' : json.dumps(list(platforms)), }) 


def my_custom_sql(): 
    cursor = connection.cursor() 
    cursor.execute("SELECT HWPlatformName FROM hwplatform", None) 
    rows = cursor.fetchall() 
    return rows 

は今、私は私のテンプレートにデータを取得することができるが、私はそれが私に正しいJSON形式を与えているとは思わない...

+0

なぜモデルの使用を避けたいですか?これは、Django(マイグレーションあり)を使用するセールスポイントの1つです –

+0

(1)[Djangoの生のSQLを出す際のドキュメント](https://docs.djangoproject.com/en/1.9/topics/db/sql /)? (2)Emileが言ったこと –

+0

私が知っている、私は以前にそれらを使用していました。私はWebアプリケーション用の他のスクリプトを書く必要があり、Djangoモデルに頼りたくはありません。そして、はい、私はドキュメントを見てきました。 – Carbon

答えて

1

:あなた

UPDATEありがとうございましたモデル、あなたはオブジェクトのプロパティのrawメソッドを探しています。

platforms = Platform.objects.raw('SELECT * FROM Platform') 

あなただけのサーバからコンテンツを探しているなら、あなただけのSQLクエリから値を返すことができます。

platforms = my_custom_sql() # Or call my_custom_sql statically. 

はあなたが遅れて人口を探しているなら、あなたは置くことができますmy_custom_sql機能にyieldステートメント。

+1

私は生のメソッドは、あなたにモデルオブジェクトを与えると思う、正しい? – Carbon

+0

私の目標は、どのモデルオブジェクトも使用しないことです。それは可能ですか? – Carbon

+0

@Carbon補遺は役に立ちますか? – cwallenpoole

関連する問題