2012-04-26 7 views
2

Postgresデータベースに同じ構造とデータが部分的に重なっている2つのテーブルがあり、table1table2と呼んでいます。あるテーブルにある行をすべて取得し、もう一方のテーブルは取得しないで、デルタを計算しようとしています。私が実行しようとしているクエリは、大体この:Django:テーブルのデルタの計算

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2) 
SELECT * FROM table2 WHERE id NOT IN (SELECT id FROM table1) 

ジャンゴ1.4でこれを構築するための最良の方法は何ですか?私は両方のテーブルに対して定義された1つのモデルを持つことができるいくつかの方法はありますか?この情報を照会する最良の方法は何ですか?

答えて

1

あなたはベーステーブルを作ることができる:

class Table(models.Model): 
    #some fields 
    pass 

class Table1(Table): 
    #some fields specific for table 1 
    pass 

class Table2(Table): 
    #some fields specific for table 2 
    pass 

あなたが使用することができ、テーブルのデルタを取得するには:

Table1.objects.exclude(id__in=Table2.objects.values_list('id', flat=True)) 
関連する問題