首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示与其他模型相关的模型的细节?

如何显示与其他模型相关的模型的细节?
EN

Stack Overflow用户
提问于 2019-11-10 13:18:07
回答 1查看 23关注 0票数 1

当URL (例如localhost:8000/apirest/customers )时,我需要它。

Customers是一个表,它是一个表角色,我需要显示所有角色字段。

代码语言:javascript
复制
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展示这样的东西

代码语言:javascript
复制
{
     "Id":1,
     "Name":"Jhon Carter",
     "Adress": "Lombard Street"
     "Phone": "25 56592552",
     "Role":{
           "Id":1,
           "Description":"Description 1"
           "Premium": true
      }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-10 16:34:01

欢迎来到素豪尔赫。

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

代码语言:javascript
复制
Role = models.ForeignKey(Role, on_delete=models.CASCADE)

我得到了Undefined Role,这是因为角色定义在下一行。因此,我将模型定义改为:

代码语言:javascript
复制
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)

您想要做的是序列化关系,对于您的情况是这样的:

代码语言:javascript
复制
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']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58789047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档