如何在Django-rest-framework中加入两个模型 [英] How to join two models in django-rest-framework

查看:100
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆