【发布时间】:2020-10-22 04:58:26
【问题描述】:
如何在 django rest framework 中使用 hyperlinkedModelSerializer 我的输出显示:
HyperlinkedRelatedField 需要序列化程序上下文中的请求。实例化序列化器时添加context={'request': request}。
代码如下:
serailizers.py
#Program Serializer
class ProgramSerializer(serializers.ModelSerializer):
class Meta:
model = Program
fields = '__all__'
#Program MiniSerializer
class ProgramMiniSerializer(serializers.HyperlinkedModelSerializer):
programCode = serializers.HyperlinkedRelatedField(many=True,view_name='program-detail', read_only=True)
class Meta:
model = Program
fields = ('programCode', 'pro_name', 'url', 'DepartmentID')
viewsets.py
class ProgramViewSet(viewsets.ModelViewSet):
queryset = Program.objects.all()
serializer_class = ProgramSerializer
filterset_class = ProgramFilter
filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
__basic_fields = ( 'programCode', 'pro_name','pro_shortForm', 'DepartmentID')
filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
filter_fields = ('programCode', 'DepartmentID')
search_fields = ('DepartmentID')
def list(self, request, *args, **kwargs):
programs = Program.objects.all()
serializer = ProgramMiniSerializer(programs, many=True)
return Response(serializer.data)
def get_queryset(self):
programs = Program.objects.all()
return programs
def retrieve(self, request, *args, **kwargs):
params=kwargs
print(params['pk'])
# programs = Program.objects.all()
programs = Program.objects.filter(DepartmentID = params['pk'])
serializer = ProgramMiniSerializer(programs, many=True)
return Response(serializer.data)
【问题讨论】:
-
能否请您在使用 ProgramMiniSerializer 的地方添加视图?
-
是的,我已经添加了使用 ProgramMiniSerializer 的 viewset.py 文件
标签: django filter django-rest-framework