Django': Einträge bei model mit site im django admin...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich verstehe da was nicht. Ich hab mehrere Models, die diese Felder haben:

Code: Alles auswählen

sites = models.ManyToManyField(Site, default=[settings.SITE_ID])
on_site = CurrentSiteManager('sites')
Nun ist es so, das man bei einigen Modellen im Django Admin Panel nur die Einträge der aktuellen SITE_ID sieht. Bei anderen sieht man immer alle Einträge ungefiltert.

Weiß jemand warum?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Ja, du willst 2 Model komplett zeigen, ich wette bei manchen ist zusätzlich noch objects definiert, diese verhalten sich korrekt und zeigen alles an. Die die nur on_site definiert haben überschreiben den default Manager und zeigen nur die aktuellen an… Am sichersten ist immer sowas:

Code: Alles auswählen

class MyModel:
  objects = models.DefaultManager # kA wie das Teil genau heißt
  on_site = other_crap_manager
Mehr dazu steht wie üblich in der sehr guten Dokumentation zu Django ;)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Guter Hinweis, danke.

Wenn ein Model nur ein "on_site" definiert, wird immer im Admin gefiltert. Wenn es aber explizit ein "objects" definiert, dann sieht man alle Einträge.

Das Verhalten ist IMHO etwas komisch. Denn normalerweise hat jedes Model doch automatisch ein "objects".

Hab es direkt mal in PyLucid eingepflegt: http://trac.pylucid.net/changeset/2466

EDIT: Ach, der default Manager heißt einfach models.Manager()

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

jens hat geschrieben:Das Verhalten ist IMHO etwas komisch. Denn normalerweise hat jedes Model doch automatisch ein "objects".
Ne, das wird so weit ich weiß nur angelegt wenn nicht schon nen Manager existiert…
Antworten