如何在Django-rest-framework中加入两个模型 [英] How to join two models in django-rest-framework
本文介绍了如何在Django-rest-framework中加入两个模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有两个模型:
level:
id
file_number
status
level_process:
process_ptr_id
level_id
我想结合上面的两个表格,使用django-rest-framework在一个API中显示它。.我正在互联网上寻找示例,但我找不到它...通过我使用 python 2.7,django 1.10.5和djangorestframework 3.6.2的方式
I want to combine both of my table above to display it in one API using django-rest-framework.. I'm looking for the example on the internet and i cannot find it...by the way i'm using 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)
推荐答案
尝试以下操作。为您的 Level
模型创建序列化器:
Try the following. Create serializer for your Level
model:
class LevelSerializer(serializers.ModelSerializer):
class Meta:
model = Level
然后在 LevelProcessSerializer
,包括 LevelSerializer
像这样:
class LevelProcessSerializer(serializers.ModelSerializer):
level = LevelSerializer(read_only=True)
class Meta:
model = LevelProcess
在ModelViewset中的用法:
Usage in your ModelViewset:
class ViewLevelProcessViewSet(viewsets.ModelViewSet):
queryset = LevelProcess.objects.all()
serializer_class = LevelProcessSerializer
这样,您的json看起来会像这样:
This way, your json will look something like this:
{
"id": 1,
"level": {
"id": 3,
"status": "red"
}
}
Ho pe这有帮助!
Hope this helps!
这篇关于如何在Django-rest-framework中加入两个模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文