Code: Alles auswählen
class PageMeta():
...
pagetree = models.ForeignKey(PageTree)
language = models.CharField()
1. Gib mit alle Einträge, die pagetree==XY haben und in language=="de" sind
2. Wenn es "de" nicht gibt, dann in language=="en"
Also ungefähr so:
Code: Alles auswählen
queryset = PageMeta.objects.all().filter(pagetree=XY)
queryset = queryset.filter(language="de").fill_missing(language="en")
Ich mache das z.Z. zu Fuss. Also erst alles in einer Sprache holen. Dann nachsehen, welche Einträge fehlen und diese dann nachträglich holen...
Btw. wie würde das in SQL aussehen?
EDIT: Um es nochmal klarer zu machen:
Mal angenommen ich hab die Daten:
Code: Alles auswählen
PageMeta(name="erste Seite", pagetree="1", language="de")
PageMeta(name="dritte Seite", pagetree="1", language="de")
PageMeta(name="Page One", pagetree="1", language="en")
PageMeta(name="Page Two", pagetree="1", language="en")
PageMeta(name="Page 1 fr", pagetree="1", language="fr")
Code: Alles auswählen
PageMeta(name="erste Seite", pagetree="1", language="de")
PageMeta(name="Page Two", pagetree="1", language="en")
PageMeta(name="dritte Seite", pagetree="1", language="de")
EDIT2: Wie ich im IRC erfahren hab, suche ich ein ersatz für den "case", siehe: http://www.sql-und-xml.de/server-daten/ ... /case.html