当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
}
}发布于 2019-11-10 16:34:01
欢迎来到素豪尔赫。
首先,您的模型编译成功吗?因为在这一行:
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)您想要做的是序列化关系,对于您的情况是这样的:
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']https://stackoverflow.com/questions/58789047
复制相似问题