How to join two models in django-rest-framework

后端 未结 2 765
难免孤独
难免孤独 2020-12-31 08:11

Let say i have two models:

level:

id
file_number
status


level_process:

process_ptr_id
level_id

I want to combine both of my table above

相关标签:
2条回答
  • 2020-12-31 08:43

    Try the following. Create serializer for your Level model:

    class LevelSerializer(serializers.ModelSerializer):
        class Meta:
            model = Level
    

    Then, inside LevelProcessSerializer, include LevelSerializer like this:

    class LevelProcessSerializer(serializers.ModelSerializer):
        level = LevelSerializer(read_only=True)
    
        class Meta:
            model = LevelProcess
    

    Usage in your ModelViewset:

    class ViewLevelProcessViewSet(viewsets.ModelViewSet):
        queryset = LevelProcess.objects.all() 
        serializer_class = LevelProcessSerializer
    

    This way, your json will look something like this:

    {
       "id": 1,
       "level": {
          "id": 3,
          "status": "red"
       }
    }
    

    Hope this helps!

    0 讨论(0)
  • 2020-12-31 08:49

    Don't try to "join" tables. This isn't SQL.

    I am assuming your model look like Following,

    class Level(models.Model):
        .......
    
    class LevelProcess(models.Model):
        level = models.ForeignKey(Level)
    

    Now, let's walk for query,

    l = Level.objects.filter(id=level_id).first()
    lp = l.level_process_set.all()
    

    This is how we do in Django ORM.

    0 讨论(0)
提交回复
热议问题