Ich arbeite an der Straffung, wie ich verschiedene Modelle in der API für meine Djangp-App einbinden. Zuvor hatte ich es eingestellt, wo jedes Modell ein Viewset und einen separat definierten Serializer hatte. Stattdessen arbeite ich an einer allgemeineren Methode, bei der ich nur ein Modell und eine Liste relevanter Felder übergebe und automatisch zur API hinzugefügt werde. Das Problem, das ich in renne derzeit mit Definition der serializer_class:Django REST-Framework HyperlinkedModelSerializer
from myapp import MyModel
from rest_framework.serializers import HyperlinkedModelSerializer
from rest_framework.viewsets import ModelViewSet
app_name = 'myapp'
fields = ('field1', 'field2', 'field3')
queryset = MyModel.objects.all()
# Problem is here
serializer_class = HyperlinkedModelSerializer(model=MyModel, fields=fields)
viewset = ModelViewSet(queryset=queryset, serializer_class=serializer_class)
# Then to register it all with the router:
self.register(app_name + '/' + model.__name__, viewset)
ich den Fehler:
TypeError: __init__() got an unexpected keyword argument 'fields'
Das Problem scheint, dass in HyperlinkedModelSerializer zu sein, 'Modell' und 'Felder' sind normalerweise als Meta-Optionen definiert, so scheint es nicht zu akzeptieren, wenn sie auf diese Weise bereitgestellt werden.
Gibt es einen Weg, dies zu erreichen?
Danke.
Zeile 3: Nameerror: name ‚Meta‘ definiert ist, nicht – Ben
wooops, Ich habe vergessen, dass die Meta-Klasse nichts erbt. Beitrag aktualisiert. – Linovia
Hm, das Problem, das ich jetzt bekomme, ist, wenn ich versuche, es zu registrieren: self.register (app_name + '/' + Modell .__ name__, viewset) Es wird eine Menge Fehler angezeigt, aber ich denke, es kommt herunter an: AttributeError: Diese Methode ist nur für die Klasse verfügbar, nicht für Instanzen. – Ben