python - Django Rest Framework 嵌套关系
问题描述
我是使用 Django 的新手,我需要你的帮助
所以,我创建了一个这样的模型
模型.py
from django.db import models
# Create your models here.
class Pegawai(models.Model):
name = models.CharField(max_length=60)
alias = models.CharField(max_length=60)
def __str__(self):
return self.name
class Barang(models.Model):
pegawai = models.ForeignKey(Pegawai,on_delete=models.CASCADE,related_name='barangs',)
nama_barang = models.CharField(max_length=60)
harga_barang = models.CharField(max_length=60)
def __str__(self):
return self.pegawai.name
我的序列化器:
序列化程序.py
from rest_framework import serializers, fields
from .models import Pegawai,Barang
class BarangSerializer(serializers.ModelSerializer):
class Meta:
model = Barang
fields = (
'pegawai',
'nama_barang',
'harga_barang',
)
class PegawaiSerializer(serializers.ModelSerializer):
barangs = BarangSerializer(read_only=True, many=True)
class Meta:
model = Pegawai
fields = (
'id',
'name',
'alias',
'barangs',
)
我的看法:
视图.py
from rest_framework import viewsets
from .serializers import PegawaiSerializer,BarangSerializer
from .models import Pegawai,Barang
class BarangViewSet(viewsets.ModelViewSet):
queryset = Barang.objects.all().order_by('nama_barang')
serializer_class = BarangSerializer
class PegawaiViewSet(viewsets.ModelViewSet):
queryset = Pegawai.objects.all().order_by('name')
serializer_class = PegawaiSerializer
结果:
{
"id": 5,
"name": "Ryan",
"alias": "R",
"barangs": [
{
"pegawai": 5,
"nama_barang": "burjo",
"harga_barang": "1234"
},
问题:如何将 pegawai 字段从 id 更改为 name?像这样:
{
"id": 5,
"name": "Ryan",
"alias": "R",
"barangs": [
{
"pegawai": Ryan,
"nama_barang": "burjo",
"harga_barang": "1234"
},
我已经搜索了一些解决方案,但没有任何效果,我不知道问题出在哪里,所以我需要你的指导。干杯。
解决方案
使用序列化程序.CharField。
class BarangSerializer(serializers.ModelSerializer):
pegawali=serializers.CharField(source="pegawali.name")
class Meta:
model = Barang
fields = (
'pegawai',
'nama_barang',
'harga_barang',
)
推荐阅读
- vue.js - 如果数据在分配给状态之前被修改,则绑定到数组的多个复选框会失去反应性
- sql - 如何通过词库在 SQL Server 中进行全文搜索得到想要的结果?
- node.js - Gulp watch 未检测到文件更改
- r - 检测“data.table”中行的子集
- javascript - ImageCollection (Error) DateRange: Bad date/time '2020-12-21' , '2021-03-21'
- kotlin - 如果布局多次包含在 sameLayout 中,则数据绑定与合并不起作用
- redis - 在 redisson 中更改日志记录级别
- python - 计算是否存在巨型组件
- python - Python中输入函数的整数或浮点数
- cluster-analysis - OpenLayers Cluster Source 不返回 (source.getSource()) 的确切原始给定 Source