Общая структура моделей такова, что существуют учителя и устройства, каждое устройство имеет отношение ForeignKey с идентификатором учителя / ПК.
Я пытаюсь создать свой API таким образом, чтобы при переходе к подробному представлению для учителя отображались все связанные с ним устройства. Я переопределил get_serializer_class () , чтобы указать, какой сериализатор использовать в соответствующее время, но не могу понять, как правильно изменить набор запросов на основе подробного представления или нет. Ошибка размещена ниже.
Got AttributeError when attempting to get a value for field `brand` on serializer `DeviceSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `Teacher` instance.
Original exception text was: 'Teacher' object has no attribute 'brand'.
class TeacherViewSet(viewsets.ModelViewSet):
queryset = Teacher.objects.order_by('campus','name')
serializer_class = TeacherSerializer
detail_serializer_class = DeviceSerializer
def get_serializer_class(self):
if self.action == 'retrieve':
if hasattr(self, 'detail_serializer_class'):
return self.detail_serializer_class
return super(TeacherViewSet, self).get_serializer_class()
def get_queryset(self, pk=None):
if pk is not None:
return Device.objects.filter(device__owner=self.kwargs.get('pk')
return Teacher.objects.all()