Ich habe ein Modell "Zuordnung", die ich über die API aktualisieren möchten.Update Model Instanz über Django REST POST
pro Kommentare
Aktualisierturls.py
router = routers.DefaultRouter()
router.register(r'assignments', views.AssignmentList, base_name='Assignments')
urlpatterns = [
url(r'^api/v1/', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
serializers.py
class AssignmentSerializer(serializers.ModelSerializer):
class Meta:
model = Assignment
fields = (
'id', 'company', 'farm', 'sensor', 'name', 'location', 'notes', 'units', 'max_height', 'frequency',
'interval', 'max_threshold', 'min_threshold', 'notify', 'last_alert_time', 'last_alert_water_level')
views.py
class AssignmentList(viewsets.ModelViewSet):
serializer_class = AssignmentSerializer
pagination_class = None
def get_queryset(self):
queryset = Assignment.objects.all()
company_id = self.request.query_params.get('company_id', None)
sensor_id = self.request.query_params.get('sensor_id', None)
if company_id is not None:
queryset = Assignment.objects.filter(company_id=company_id)
if sensor_id is not None:
queryset = Assignment.objects.filter(sensor_id=sensor_id)
return queryset
Momentan ermöglicht meine Ansicht eine einfache Filterung basierend auf zwei der Felder 'company_id' und 'sensor_id'. Dies ermöglicht einen einfachen Zugriff auf die Daten in JSON. Leider kann ich nicht herausfinden, wie man selbst mit dem eingebauten API-Formular zurückschickt. Ich würde gerne in der Lage sein, zu einer einzigen Instanz zu filtern und ein einzelnes Feld zu bearbeiten, sagen wir "assignment.name" für jetzt.
Es ist mein Verständnis, dass ...
Die von der ModelViewSet-Klasse .list sind(), .retrieve(), .Create(), .update(), .partial_update(), und .destroy(). (DRF Docs)
Also was muss ich tun, um sie zu nutzen, um eine Modellinstanz über URL zu bearbeiten? Oder redigiere einfach eine Periode. Ich bin im Kreis gelaufen und habe verschiedene Mixins, Views (UpdateAPIView, RetrieveUpdateAPIView etc.) und diese Frage insbesondere Stack Overflow: Django Rest Framework update field getestet.
Sie müssen nichts tun. Das ViewSet tut bereits alles, um dies zu unterstützen. –
Na dann, wie benutze ich es? Das integrierte Formular wird nicht validiert, da die Fremdschlüssel 'company_id', 'farm_id' und 'sensor_id' nicht vorhanden sind. Warum das fehlt, ist eine andere Frage. – Jon