2013-12-10 115 views
0

想寫上使用Django的queryset兩個表連接查詢,所以需要建議寫 SQL連接使用的查詢集Django的查詢..寫SQL連接使用的查詢集查詢在Django

這裏是我的查詢和模型表

SELECT t.time, d.id2 
    FROM disp_b_time t JOIN disp_dispatch d ON t.id1 = d.id2 
    WHERE t.status = "completed" AND d.status = 0 AND d.vehicle_id =1 

class B_Time(models.Model): 
    id1 = models.ForeignKey(Book) 
    dispatcher= models.ForeignKey(D) 
    status = models.CharField(max_length=128, choices=B_STATUS) 
    time = models.DateTimeField(auto_now=True, auto_now_add=True) 
    register = models.DateField() 
    modified = models.DateTimeField(auto_now=True, auto_now_add=True) 


class Dispatch(models.Model): 
    id2 = models.ForeignKey(Book) 
    vehicle = models.ForeignKey(Vehicle) 
    driveId = models.ForeignKey(Drive) 
    dispId = models.ForeignKey(D) 
    status = models.CharField(max_length=128, choices=STATUS) 
    register = models.DateTimeField() 
    modified = models.DateTimeField(auto_now=True, auto_now_add=True) 

在此先感謝...

+1

請更具體的在這裏。你究竟想要完成什麼?包括你的模型和你想要的查詢的描述。 – jonafato

+1

@jonafato好,但他在提問之前至少應該展示他嘗試過的東西。 –

+0

您的模型與您的連接查詢不匹配。至少你應該有book_id或dispID加入表 – Nilesh

回答

0
d = Dipatch.objects.filter(vehicle__pk=1)\ 
        .filter(status=0).filter(dispID__b_time__status='completed') 
0

爲什麼

d = Dipatch.objects.filter(vehicle__pk=1)\ 
        .filter(status=0).filter(dispID__b_time__status='completed') 

我們可以簡單地寫爲

d = Dipatch.objects.filter(vehicle__pk=1, status=0, dispID__b_time__status='completed') 
+0

但兩個版本都不正確。該連接是在'id1 = id2'上進行的 – kanu