我需要使用URL,例如localhost:8000 / apirest / customers
Customers是一个分配了角色Role的表,我需要显示Role的所有字段
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
}
}
答案 0 :(得分:0)
欢迎来到SO Jorge。
首先,您的模型可以成功编译吗?因为在这一行:
Role = models.ForeignKey(Role, on_delete=models.CASCADE)
我得到Undefined Role
,这是因为角色定义在接下来的几行中。所以我将模型定义更改为:
class Customer(models.Model):
class MyRole(models.Model):
Id = models.AutoField(primary_key=True)
Description = models.CharField(max_length=60)
Premium = models.BooleanField()
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(MyRole, on_delete=models.CASCADE)
您想要做的是serializing relations,对于您的情况,它将是这样的:
from rest_framework import serializers
from core.models import Customer
class RoleSerializer(serializers.ModelSerializer):
class Meta:
model = Customer.MyRole
fields = ['Id', 'Description', 'Premium']
class CustomerSerializer(serializers.ModelSerializer):
Role = RoleSerializer(many=False, read_only=True)
class Meta:
model = Customer
fields = ['Id', 'Name', 'Address', 'Phone', 'Role']