gpt4 book ai didi

python - 使用 django-rest-framework 序列化程序检索外键值

转载 作者:IT老高 更新时间:2023-10-28 20:28:56 27 4
gpt4 key购买 nike

我正在使用 django rest 框架来创建 API。我有以下型号:

class Category(models.Model):
name = models.CharField(max_length=100)

def __unicode__(self):
return self.name


class Item(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, related_name='items')

def __unicode__(self):
return self.name

为我要做的类别创建一个序列化程序:

class CategorySerializer(serializers.ModelSerializer):
items = serializers.RelatedField(many=True)

class Meta:
model = Category

...这将为我提供:

[{'items': [u'Item 1', u'Item 2', u'Item 3'], u'id': 1, 'name': u'Cat 1'},
{'items': [u'Item 4', u'Item 5', u'Item 6'], u'id': 2, 'name': u'Cat 2'},
{'items': [u'Item 7', u'Item 8', u'Item 9'], u'id': 3, 'name': u'Cat 3'}]

我将如何从 Item 序列化程序中获取反向,即:

[{u'id': 1, 'name': 'Item 1', 'category_name': u'Cat 1'},
{u'id': 2, 'name': 'Item 2', 'category_name': u'Cat 1'},
{u'id': 3, 'name': 'Item 3', 'category_name': u'Cat 1'},
{u'id': 4, 'name': 'Item 4', 'category_name': u'Cat 2'},
{u'id': 5, 'name': 'Item 5', 'category_name': u'Cat 2'},
{u'id': 6, 'name': 'Item 6', 'category_name': u'Cat 2'},
{u'id': 7, 'name': 'Item 7', 'category_name': u'Cat 3'},
{u'id': 8, 'name': 'Item 8', 'category_name': u'Cat 3'},
{u'id': 9, 'name': 'Item 9', 'category_name': u'Cat 3'}]

我已通读 reverse relationships 上的文档对于其余框架,但这似乎与非反向字段的结果相同。我错过了什么明显的东西吗?

最佳答案

在 DRF 3.6.3 版中,这对我有用

class ItemSerializer(serializers.ModelSerializer):
category_name = serializers.CharField(source='category.name')

class Meta:
model = Item
fields = ('id', 'name', 'category_name')

更多信息可以在这里找到:Serializer Fields core arguments

关于python - 使用 django-rest-framework 序列化程序检索外键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17280007/

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