gpt4 book ai didi

Django Rest Framework - 如何从相关模型集中只获取一个字段

转载 作者:行者123 更新时间:2023-12-04 02:43:50 25 4
gpt4 key购买 nike

我有以下模型:

from django.db import models

class City(models.Model):
name = models.CharField(max_length=30)
last_update = models.DateTimeField(null=True)

class BusStop(models.Model):
city = models.ForeignKey(City, on_delete=models.CASCADE)
name = models.CharField(max_length=200, blank=True, default='')

现在使用 Django Rest Framework,我想创建序列化程序,它将返回城市详细信息以及城市中所有 BusStops 的列表 - 但我希望列表仅包含具有 BusStop 名称的字符串,如下所示:

{
"id": 1
"name": "City"
"last_update": "2019-09-19T22:13:54.851363Z"
"bus_stops": [
"stop1",
"stop2",
"stop3"
]
}

到目前为止我尝试的是跟随序列化程序:

from rest_framework import serializers

class BusStopSerializer(serializers.ModelSerializer):
class Meta:
model = BusStop
fields = ('name', )


class CityDetailsSerializer(serializers.ModelSerializer):
busstop_set = BusStopSerializer(many=True)

class Meta:
model = City
fields = ('id', 'name', 'last_update', 'busstop_set')

但这会创建其中包含“名称”的对象列表。那么,如何创建一个列表,其中只有 BusStop 名称(作为字符串)?

最佳答案

您可以使用 StringRelatedField 而不是额外的 BusStopSerializer :

# models.py
class BusStop(models.Model):
city = models.ForeignKey(City, on_delete=models.CASCADE)
name = models.CharField(max_length=200, blank=True, default='')

def __str__(self):
return self.name

# serializers.py
class CityDetailsSerializer(serializers.ModelSerializer):
bus_stops = StringRelatedField(many=True)

class Meta:
model = City
fields = ('id', 'name', 'last_update', 'bus_stops')

关于Django Rest Framework - 如何从相关模型集中只获取一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58062900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com