Django rest framework 如何显示与其他模型相关的模型的详细信息?
我需要这个URL,例如localhost:8000/apirest/customers Customers是一个被指定为表角色的表,我需要显示角色的所有字段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
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'、'姓名'、'地址'、'电话'、'角色']