Django ORM. Unterabfrage verbinden

Ich habe eine Tabelle, die eine Liste einiger Websites und eine Tabelle mit Statistiken enthält.

class Site(models.Model):
    domain_name = models.CharField(
        max_length=256,
        unique=True,
    )


class Stats(models.Model):
    date = models.DateField()
    site = models.ForeignKey('Site')
    google_pr = models.PositiveIntegerField()

    class Meta:
        unique_together = ('site', 'date')

Ich möchte alle Websites und Statistiken für ein konkretes Datum sehen. Wenn für das Datum kein Statistikdatensatz vorhanden ist, darf die Auswahl nur eine Site enthalten.

Wenn ich benutze:

Site.objects.filter(stats__date=my_date)

Ich werde keine Websites erhalten, für die keine Aufzeichnungen vorliegenmy_date imstats Tabelle. Denn in diesem Fall sieht die SQL-Abfrage folgendermaßen aus:

SELECT *
FROM site
LEFT OUTER JOIN stats ON site.id = stats.site_id
WHERE stats.date = 'my_date'

Die Abfragebedingung schließt Datensätze mit NULL-Daten aus, und Websites ohne Statistik werden nicht in die Auswahl aufgenommen.

In meinem Fall benötige ich eine Join-Tabelle, die bereits nach Datum gefiltert wurde:

SELECT *
FROM site
LEFT OUTER JOIN
  (SELECT *
   FROM stats
   WHERE stats.date = 'my-date') AS stats
ON site.id = stats.site_id

Wie kann ich diese Abfrage in Django ORM übersetzen?

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage