2012-03-29 3 views
1

übergeben Ich arbeite daran, das Django-Wiederholungspaket zu aktualisieren, um mit meiner Version von Python/Django zu arbeiten. Was ich komme gegen die Linie bei https://github.com/emperorcezar/django-recurrence/blob/master/recurrence/fields.py#L103Wie kann ich selbst an die ungebundene Methode einer separaten Klasse

return super(RecurrenceField, self).formfield(**defaults) 

Die Klasse, die Linie Aufruf ist RecurrenceModelField, die ein Wrapper von Sorten ist (aber nicht eine Unterklasse) um RecurrenceField.

Irgendwann muss diese super() schwarze Magie funktioniert haben, aber es funktioniert nicht mehr. Jetzt frage ich mich, wie man diese Funktionalität repliziert?

Gibt es eine einfache Reparatur, um es wieder zu funktionieren, oder muss ich umgestalten?

+0

Wenn 'self' keine Instanz von' RecurrenceField' ist, das nie gearbeitet hat. –

+0

Das erste Mal, dass ich jemals versucht habe, es zu benutzen, also könnte man sehr gut Recht haben. – emperorcezar

Antwort

1

Diese Funktion wurde im Commit 54909d74fe hinzugefügt. Es hätte nie funktioniert.

Das Objekt RecurrenceModelField ist eine Unterklasse von Djangos OneToOneField. Mit Blick auf die base class formfield method wird das Argument der gebundenen Methode immer eine Instanz von RecurrenceModelField sein.

Ich denke, die wahrscheinlichste Erklärung ist, dass es ein Kopieren/Einfügen-Fehler war - seit der same line erscheint in der RecurrenceField Klassenmethode. Der Autor hat es wahrscheinlich kopiert und vergessen, den Klassennamen zu ändern.

Sie diese Zeile ändern sollte:

return super(RecurrenceModelField, self).formfield(**defaults) 
Verwandte Themen