【发布时间】:2019-03-19 08:33:01
【问题描述】:
模型的通用结构是有教师和设备,每个设备与教师ID/PK都有一个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()
【问题讨论】:
标签: django rest django-rest-framework api-design