Ich experimentiere mit django-nonrel
auf appengine und dem Versuch, eine djangotoolbox.fields.ListField
um eine Many-to-many-Beziehung zu implementieren. Wie ich in der Dokumentation gelesen habe, ist eine ListField
ist etwas, das Sie verwenden können, um eine Umgehung für djamgo-nonrel zu schaffen, das keine Many-to-many-Beziehungen unterstützt.
Dies ist ein Auszug aus meinem Modell:
class MyClass(models.Model):
field = ListField(models.ForeignKey(AnotherClass))
Also, wenn ich das richtig verstehe, erstelle ich eine Liste von Fremdschlüsseln zu einer anderen Klasse, um eine Beziehung mit mehreren Instanzen einer anderen Klasse anzuzeigen
Mit diesem Ansatz funktioniert alles gut ... Keine Ausnahmen. Ich kann "MyClass"-Objekte in Code und Ansichten erstellen. Aber wenn ich versuche, die Verwaltungsschnittstelle zu verwenden, erhalte ich den folgenden Fehler
No form field implemented for <class 'djangotoolbox.fields.ListField'>
Also dachte ich, ich probiere etwas aus, was ich noch nie gemacht habe. Mein eigenes Feld erstellen. Nun, eigentlich mein eigenes Formular für die Bearbeitung MyClass
Instanzen in der Verwaltungsoberfläche. So habe ich es gemacht:
class MyClassForm(ModelForm):
field = fields.MultipleChoiceField(choices=AnotherClass.objects.all(), widget=FilteredSelectMultiple("verbose_name", is_stacked=False))
class Meta:
model = MyClass
dann passe ich MyClassForm
als das zu verwendende Formular für die Verwaltungsoberfläche
class MyClassAdmin(admin.ModelAdmin):
form = MyClassForm
admin.site.register(MyClass, MyClassAdmin)
Ich dachte, das würde funktionieren, aber das tut es nicht. Wenn ich die Verwaltungsoberfläche aufrufe, erhalte ich die gleiche Fehlermeldung wie zuvor. Kann mir jemand sagen, was ich hier falsch mache ... oder ob Sie andere Vorschläge oder Erfolgsgeschichten zur Verwendung der ListField
, SetField
usw. aus djangotoolbox.fields
in der Verwaltungsschnittstelle wäre es sehr zu begrüßen.