回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我刚开始使用Django,我需要你的帮助</p>
<p>所以,我创建了一个这样的模型</p>
<blockquote>
<p><strong>models.py</strong></p>
</blockquote>
<pre><code>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
</code></pre>
<p>我的序列化程序:</p>
<blockquote>
<p><strong>serializers.py</strong></p>
</blockquote>
<pre><code>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',
)
</code></pre>
<p>我的看法:</p>
<blockquote>
<p><strong>views.py</strong></p>
</blockquote>
<pre><code>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
</code></pre>
<p><strong>结果:</strong></p>
<pre><code>{
"id": 5,
"name": "Ryan",
"alias": "R",
"barangs": [
{
"pegawai": 5,
"nama_barang": "burjo",
"harga_barang": "1234"
},
</code></pre>
<p><strong>问题:</strong>如何将pegawai字段从id更改为名称?像这样:</p>
<pre><code>{
"id": 5,
"name": "Ryan",
"alias": "R",
"barangs": [
{
"pegawai": Ryan,
"nama_barang": "burjo",
"harga_barang": "1234"
},
</code></pre>
<p>我已经找到了一些解决方案,但没有任何效果,我不知道问题出在哪里,所以我需要你的指导。干杯</p>