2012-04-26 2 views
2

У меня есть две таблицы в базе данных Postgres с одинаковой структурой и частично перекрывающимися данными, назовите их table1 и table2. Я пытаюсь вычислить дельта, получив все строки, которые находятся в одной таблице, но не другую. Запросы, которые я пытаюсь запустить, примерно такие:Django: Расчет Delta на таблицах

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

Каков наилучший способ структурирования этого в Django 1.4? Есть ли какой-то способ, который я могу использовать только одну модель для обеих таблиц? Каков наилучший способ запроса этой информации?

ответ

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))