Django rest framework 如何显示与其他模型相关的模型的详细信息?

Django rest framework 如何显示与其他模型相关的模型的详细信息?,django-rest-framework,Django Rest Framework,我需要这个URL,例如localhost:8000/apirest/customers Customers是一个被指定为表角色的表,我需要显示角色的所有字段 class Customer(models.Model): Id = models.AutoField(primary_key=True) Name = models.CharField(max_length=60) Address = models.CharField(max_length=60) Phon

我需要这个URL,例如localhost:8000/apirest/customers

Customers是一个被指定为表角色的表,我需要显示角色的所有字段

class Customer(models.Model):
    Id = models.AutoField(primary_key=True)
    Name = models.CharField(max_length=60)
    Address = models.CharField(max_length=60)
    Phone =  models.CharField(max_length=60)
    Role = models.ForeignKey(Role, on_delete=models.CASCADE)

   class Role(models.Model):
        Id = models.AutoField(primary_key=True)
        Description = models.CharField(max_length=60)
        Premium = models.BooleanField()
这只是一个示例,我需要Json显示如下内容

{
     "Id":1,
     "Name":"Jhon Carter",
     "Adress": "Lombard Street"
     "Phone": "25 56592552",
     "Role":{
           "Id":1,
           "Description":"Description 1"
           "Premium": true
      }

}
欢迎来到苏豪尔

首先,你的模型编译成功了吗?因为在这一行:

Role = models.ForeignKey(Role, on_delete=models.CASCADE)
我得到了
未定义的角色
,这是因为角色定义在下一行中。因此,我将模型定义更改为:

class客户(models.Model):
类MyRole(models.Model):
Id=models.AutoField(主键=True)
Description=models.CharField(最大长度=60)
Premium=models.BooleanField()
Id=models.AutoField(主键=True)
Name=models.CharField(最大长度=60)
地址=models.CharField(最大长度=60)
Phone=models.CharField(最大长度=60)
Role=models.ForeignKey(MyRole,on_delete=models.CASCADE)
对于您的案例,您要做的是:

从rest\u框架导入序列化程序
从core.models导入客户
类RoleSerializer(serializers.ModelSerializer):
类元:
model=Customer.MyRole
字段=['Id'、'Description'、'Premium']
类CustomerSerializer(serializers.ModelSerializer):
Role=RoleSerializer(many=False,read\u only=True)
类元:
型号=客户
字段=['Id'、'姓名'、'地址'、'电话'、'角色']
欢迎来到索豪尔赫

首先,你的模型编译成功了吗?因为在这一行:

Role = models.ForeignKey(Role, on_delete=models.CASCADE)
我得到了
未定义的角色
,这是因为角色定义在下一行中。因此,我将模型定义更改为:

class客户(models.Model):
类MyRole(models.Model):
Id=models.AutoField(主键=True)
Description=models.CharField(最大长度=60)
Premium=models.BooleanField()
Id=models.AutoField(主键=True)
Name=models.CharField(最大长度=60)
地址=models.CharField(最大长度=60)
Phone=models.CharField(最大长度=60)
Role=models.ForeignKey(MyRole,on_delete=models.CASCADE)
对于您的案例,您要做的是:

从rest\u框架导入序列化程序
从core.models导入客户
类RoleSerializer(serializers.ModelSerializer):
类元:
model=Customer.MyRole
字段=['Id'、'Description'、'Premium']
类CustomerSerializer(serializers.ModelSerializer):
Role=RoleSerializer(many=False,read\u only=True)
类元:
型号=客户
字段=['Id'、'姓名'、'地址'、'电话'、'角色']