2017-05-12 5 views
0

2つの異なるテーブルから集計データを取得する必要があります。フォーマットDjangoからの連合クエリORM

element_type count 
    xyz    2 
    pqr    1 
    users   3 

SQLクエリの例は次の

Elements 
element_type tempcolumn 
    xyz   test1 
    pqr   test2 
    xyz   test3 

Users: 
    User_names   
    auser 
    buser 
    cuser 

必要出力:

SELECT element_type, count(*) 
    FROM Elements group by element_type 

union 

    select 'users',count(*) from Users 

たちはDjangoのORMと同じexcuteことができますか?

答えて

1

Djangoでは|を使用して2つのクエリーセットを結合できますが、ここでは使用しません。

値/注釈はなく、実際にquery_setのタプルのリストを返すため

あなたはDjangoの上で生のSQLを実行することができますが、生の最適化のためです。 https://docs.djangoproject.com/en/1.9/topics/db/sql/

object_count = Elements.objects.all().values('element_type').annotate(total=Count('element_type')) 
response_data = {} 
for q in object_count: 
    if q['element_type'] == 'xyz': 
     response_data['total_ xyz'] = q['total'] 
    if q['element_type'] == 'pqr': 
     response_data['total_ pqr'] = q['total'] 
response_data['users_count'] = MyUser.objects.all().count() 
関連する問題