gpt4 book ai didi

python - Django Rest Framework 获取一个查找字段作为超链接列表

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:32 25 4
gpt4 key购买 nike

我有一个模型Album 和一个模型Photo,它们通过FireignKey 字段引用第一个。我希望模型 AlbumModelSerializer 通过查找字段返回超链接列表以关联模型 Photo 中的条目,但我只得到它返回 ID 列表。

这些是我的模型:

class Album(models.Model):
name = models.CharField(max_length=200, verbose_name=_("Name"))
description = models.TextField(null=True, blank=True, verbose_name=_("Description"))
company = models.ForeignKey(Company, on_delete=models.PROTECT, related_name='albums', verbose_name=_("Company"))
access_code = models.CharField(max_length=30, default=_create_access_code, verbose_name=_("Internal Use"))

class Meta:
verbose_name = _("Album")
verbose_name_plural = _("Albums")

def __str__(self):
return "[{}] {} ({})".format(self.pk, self.name, self.company.id)

class Photo(models.Model):
name = models.CharField(max_length=100, null=True, blank=True, verbose_name=_("Name"))
album = models.ForeignKey(Album, on_delete=models.PROTECT, related_name='photos', verbose_name=_("Album"))
photo = models.ImageField(verbose_name=_("Photo"))

class Meta:
verbose_name = _("Photo")
verbose_name_plural =_("Photos")

def __str__(self):
return "[{}] {}".format(self.pk, self.name)

这是我的序列化器:

class AlbumSerializer(serializers.ModelSerializer):
class Meta:
model = proxies.AlbumProxy
fields = ('id', 'name', 'description', 'company', 'access_code', 'photos')

我希望字段 photos 返回超链接列表,但我得到了一个 ID 列表:

"id": 1,
"name": "Navidad 2018",
"description": "La primera",
"company": 1,
"access_code": "xxxxxxxxxx",
"photos": [
11,
10,
7,
6
]

最佳答案

我想你需要一个 HyperlinkedRelatedField ,像这样:

class AlbumSerializer(serializers.ModelSerializer):
class Meta:
model = proxies.AlbumProxy
fields = (
'id',
'name',
'description',
'company',
'access_code',
'photos'
)

photos = serializers.HyperlinkedRelatedField(
many=True,
view_name='<your-photos-view-name>',
read_only=True
)

关于python - Django Rest Framework 获取一个查找字段作为超链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53751291/

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