我刚开始使用Django,我需要你的帮助
所以,我创建了一个这样的模型
models.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
我的序列化程序:
serializers.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',
)
我的看法:
views.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更改为名称?像这样:
{
"id": 5,
"name": "Ryan",
"alias": "R",
"barangs": [
{
"pegawai": Ryan,
"nama_barang": "burjo",
"harga_barang": "1234"
},
我已经找到了一些解决方案,但没有任何效果,我不知道问题出在哪里,所以我需要你的指导。干杯
您可以使用DRF RelatedField更改序列化程序中的字段值:
方法1
由于在}
Pegawai
模型中定义了__str__()
方法,因此可以使用^{方法2
使用^{}
更新-1
要在创建模型对象时解决问题,请重写
to_representation()
方法相关问题 更多 >
编程相关推荐