Diese Frage ist über das letzte Beispiel auf Custom managers and model inheritance.Django: Einfach hinzufügen zusätzlichen Manager für Kind-Klasse, immer noch Standard-Manager von AbstractBase
Ich möchte in der Lage sein, etwas Ähnliches wie die folgenden Funktionen ausführen:
class ExtraManagerModel(models.Model):
# OtherManager class supplied by argument shall be set as manager here
class Meta:
abstract = True
class ChildC(AbstractBase, ExtraManagerModel(OtherManager)): # That doesn't work, something like that
...
# Default manager is CustomManager, but OtherManager is
# also available via the "extra_manager" attribute.
Der ganze Zweck davon ist, dass ich möchte nicht eine ExtraManagerModel
Klasse für jeden überschrieben Manager schreiben, um die zu halten Standardmanager der Elternklasse (AbstractBase
).
Irgendwelche Ideen, wie dies erreicht werden kann?
Es ist mir nicht klar, was Sie tun möchten. ChildC im Beispiel von der Django-Website scheint zu tun, was Sie wollen. Beide Manager stehen der Klasse zur Verfügung, was ist der "Parameter" für ExtraManagerModel in der Vererbung? – txwikinger
Es wäre nicht sehr DRY, eine neue Model-Klasse für jeden zusätzlichen Manager zu schreiben, den Sie einem Modell hinzufügen möchten. Ich hätte gern eine Art ExtraManagerModel Template-Klasse für verschiedene Extra-Manager-Klassen. – stefanw