Mun*_*oor 10 django django-rest-framework
假设我有两种型号:
level:
id
file_number
status
level_process:
process_ptr_id
level_id
Run Code Online (Sandbox Code Playgroud)
我想结合我上面的两个表,使用django-rest-framework在一个API中显示它.我正在寻找互联网上的例子,我找不到它...顺便说一下我使用的方式 python 2.7 , django 1.10.5 and djangorestframework 3.6.2
serializer.py
class LevelSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.ReadOnlyField()
class Meta:
model = Level
fields = ('__all__')
class LevelProcessSerializer(serializers.ModelSerializer):
level = LevelSerializer(read_only=True)
class Meta:
model = LevelProcess
fields = ('__all__')
views.py
class ViewLevelProcessViewSet(viewsets.ModelViewSet):
processes = LevelProcess.objects.all()
serializer_class = LevelProcessSerializer(processes, many=True)
Run Code Online (Sandbox Code Playgroud)
Jah*_*nov 12
请尝试以下方法.为您的Level模型创建序列化程序:
class LevelSerializer(serializers.ModelSerializer):
class Meta:
model = Level
Run Code Online (Sandbox Code Playgroud)
然后,在里面LevelProcessSerializer,包括LevelSerializer这样:
class LevelProcessSerializer(serializers.ModelSerializer):
level = LevelSerializer(read_only=True)
class Meta:
model = LevelProcess
Run Code Online (Sandbox Code Playgroud)
在ModelViewset中的用法:
class ViewLevelProcessViewSet(viewsets.ModelViewSet):
queryset = LevelProcess.objects.all()
serializer_class = LevelProcessSerializer
Run Code Online (Sandbox Code Playgroud)
这样,你的json看起来像这样:
{
"id": 1,
"level": {
"id": 3,
"status": "red"
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
10494 次 |
| 最近记录: |