python - HyperlinkedRelatedField DRF 不适用于 ViewSet
问题描述
我有这些模型:
class ExamSheet (models.Model):
pass
class Exam(models.Model):
exam_sheet = models.ForeignKey('myapp.ExamSheet',
related_name='exams',
)
序列化器:
class ExamBaseSerializer(serializers.ModelSerializer):
exam_sheet = serializers.HyperlinkedRelatedField(queryset=ExamSheet.objects.all(), view_name='examsheet-detail')
class Meta:
model = Exam
fields = ('id', 'user', 'exam_sheet', )
read_only_fields = ('id', 'user',)
视图集:
class ExamViewSet(MultiSerializerViewSet):
queryset = Exam.objects.all()
class ExamSheetViewSet(MultiSerializerViewSet):
queryset = ExamSheet.objects.all()
路线:
app_name = 'exams_api'
router = DefaultRouter()
router.register(r'exams', views.ExamViewSet)
router.register(r'exams_sheets', views.ExamSheetViewSet)
urlpatterns = []
urlpatterns += router.urls
全球应用网址:
urlpatterns = [
path('api/', include('exams_api.urls')),
]
通用视图集:
class MultiSerializerViewSet(viewsets.ModelViewSet):
serializers = {
'default': None,
}
def get_serializer_class(self):
return self.serializers.get(self.action, self.serializers['default'])
但这会给我一个错误:
/api/exams/ 配置不当
无法使用视图名称“examsheet-detail”解析超链接关系的 URL。您可能未能在 API 中包含相关模型,或者
lookup_field
该字段的属性配置错误。
如何HyperlinkedRelatedField
在我的序列化程序中显示指向相关模型的链接?