使用DRF序列化器从多个表获取所需数据

2024-04-18 19:51:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新的DRF序列化,我面临的小问题在这里。。。你知道吗

你知道吗型号.py你知道吗

class roles(models.Model):
    role        =   models.IntegerField(primary_key = True)
    type    =   models.CharField(max_length = 20) 
    one         =   models.CharField(max_length = 20) 
    class Meta:
        db_table    =   'roles'

class employees(models.Model):
    name     =   models.CharField(max_length=25)
    mobileno =   models.IntegerField()
    roletype =   models.ForeignKey(roles,related_name='emps')   
    class Meta:
        db_table    =   'employees'

你知道吗序列化程序.py你知道吗

class rSerializer(serializers.ModelSerializer):
    class Meta:
        model = roles
        fields = ('type','one')

class eSerializer(serializers.ModelSerializer):
    class Meta:
        model = employees
        fields = ('name','mobileno')

你知道吗视图.py你知道吗

@csrf_exempt
@api_view(['GET'])
def accesstwo(request):  
    if request.method == 'GET':
       #emp = employees.objects.all()
       #serializer = eSerializer(emp, many=True)
       #return JSONResponse({"resource":serializer.data}) 

       emp = employees.objects.get(id = 1)
       serializer = eSerializer(emp, many=False)
       return JSONResponse(serializer.data)

如果我运行上面的代码,我得到的结果如下。你知道吗

{
  "name": "emp01",
  "mobileno": 23434
},

但是在这里,我想使用下面的序列化程序从两个表中获取数据。你知道吗

{
  "name": "emp01",
  "mobileno": 23434,
  "type":"manager",
  "one":"test"
}

如何在python DRF服务中做到这一点?。你知道吗


Tags: namepy序列化modelstypelengthmaxmeta