Django内部连接空值

时间:2017-01-05 00:14:37

标签: django django-models left-join

我目前有像这样的Django模型

ll <- l %>% map_df(enframe) %>% 
    mutate(key1=map(value, rownames),
           key2=map(value, names),
           key=map2(key1, key2, ~c(.x, .y))) %>%
    select(-key1, -key2) %>%
    unnest()
ll
# A tibble: 12 × 3
      name       value   key
     <chr>       <dbl> <chr>
1  member1  2.12962812     a
2  member2 -0.87049458     b
3  member2  0.96190007     c
4  member2  0.56403433     d
5  member1 -0.41447472     a
6  member2  0.27270458     b
7  member2 -0.01384829     c
8  member2 -0.71561501     d
9  member1 -0.81835698     a
10 member2 -2.12746977     b
11 member2  0.66185843     c
12 member2  0.07878841     d

由于各种问题,我们的数据完整性已损坏。所以,我需要找到已删除MyFirstObject的实例,但MySecondObject仍有一行外键。

数据库看起来类似于:

ll <- l %>% map_df(enframe) %>% 
    filter(name=="member2") %>%
    mutate(key=map(value, rownames)) %>%
    unnest()
ll
# A tibble: 9 × 3
     name       value   key
    <chr>       <dbl> <chr>
1 member2 -0.87049458     b
2 member2  0.96190007     c
3 member2  0.56403433     d
4 member2  0.27270458     b
5 member2 -0.01384829     c
6 member2 -0.71561501     d
7 member2 -2.12746977     b
8 member2  0.66185843     c
9 member2  0.07878841     d

注意TABLE my_second_object的第3行有一个firstObjectID,它在my_first_object表中没有相应的记录。我想找到这样的所有实例。

如果我在做原始SQL,我会做

MyFirstObject(models.Model): 
    some_field = models.BooleanField(default=False)

MySecondObject(models.Model):
    first_object = models.ForeignKey(MyFirstObject, db_column='firstObjectId') 

在Djago,我正在尝试

TABLE my_first_object
id   someField
1    a
2    a
3    b

TABLE my_second_object
id  firstObjectId
1    1
2    3
3    4

但是当我查看结果的查询时,它正在进行内连接而不是左连接。有没有人有建议?谢谢!

1 个答案:

答案 0 :(得分:0)

试试这样:

{{1}}