2016-04-06 3 views
0

私は多くの構造化データ用のデータベースを持っています。私はそれらのデータの中でクエリを実行します。Djangoモデルのソースとしてカスタムクエリの結果を使用する(MySQLデータベース)

ビューを使用してクエリを実行すると非常に役立ちます。ビューと同じ構造を持つモデルを作成し、それを「実際の」モデルとして使用することができます。

しかし、ビューを作成できない場合は、Djangoモデルを使用してカスタム結果セットをクエリできますか?

たとえば、MySQLでは、中間結果をタプルのリストに格納するクエリを作成できます。そして、リスト上でクエリを実行することができます。クエリによって作成されたタプルのリストの結果をDjangoのモデルに与えることができますか?

答えて

1

生のSQLクエリでモデルを供給する場合は、raw()メソッドを使用できます。 (公式リファレンスから)この例を見てみましょう:

class Person(models.Model): 
    first_name = models.CharField(...) 
    last_name = models.CharField(...) 
    birth_date = models.DateField(...) 

#... 

for p in Person.objects.raw('SELECT * FROM myapp_person'): 
    print(p) 

Read more here

+0

テーブルの人がデータベースに存在したことがないんときには、状況に応じて可能です代わりに、私は、クエリのためのモデルクラスを作成しましたか? –

+0

現在存在しないテーブルをどのようにクエリしますか?このために 'select'を用意する必要がありますので、これがモデルを作成する瞬間になります。私はDjangoで、Modelクラスオブジェクトへのクエリ結果を解析することは可能だとは思わないが、カーソルと直接DBクエリを使用して、クラスを動的に作成することができる(結果をフェッチし、それを反復して空のクラスにフィールドを追加することによって) –

+0

私はちょうど簡単なテストをしました。私は生のクエリを実行し、モデルとは異なる名前のテーブルからデータを選択するときにDjangoで動作することに気がつきました。ご協力いただきありがとうございます! –

関連する問題