2016-04-20 16 views
0

Ich möchte eine Abfrage machen, die die gleiche Aufgabe wie die untenDjango anfragende Modelle

SELECT 
    max(date), 
    business_id, 
    visits 
FROM 
data_traffic 
where 
business_id 
IN (
    SELECT 
     competitor_id 
    FROM 
    data_business_competitors WHERE business_id = 868 
) 
order by 
date desc 

gegeben meine SQL-Abfrage durchführt, die ich geschrieben habe eine Abfrage unten aber es gibt nicht die Besuche

TrafficData.objects.filter(business_id__in=competitors).values('business_id').annotate(max_date=Max('date')) 
+0

Sie können jederzeit eine rohe Abfrage verwenden https://docs.djangoproject.com/en/dev/topics/db/s ql/um Ihre SQL-Abfrage auszuführen – trinchet

+0

'business__id__in' war das ein Tippfehler? ('business__id' ->' business_id') – C14L

+0

Auch, '.values ​​('business_id')' Sie fragen nur nach den 'business_id's, also wird es natürlich nicht" die Besuche geben ". Oder verstehe ich hier etwas falsch? – C14L

Antwort

1

Wenn ich Sie richtig verstanden habe, kann dies tun es

TrafficData.objects\ 
      .filter(business_id__in=competitors)\ 
      .annotate(max_date=Max('date'))\ 
      .order_by('-max_date')\ 
      .values('business_id', 'visits', 'max_date')