首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django Rest框架,如何在ModelSerializer中包含“ModelSerializer”字段和相关字段?

Django Rest框架,如何在ModelSerializer中包含“ModelSerializer”字段和相关字段?
EN

Stack Overflow用户
提问于 2016-07-07 12:24:49
回答 8查看 59.2K关注 0票数 73

我有两个模型,一个有M2M关系和一个相关的名称。我希望在序列化程序和相关字段中包括所有字段。

models.py:

代码语言:javascript
运行
复制
class Pizza(models.Model):
    name = models.CharField(max_length=50, unique=True)
    toppings = models.ManyToManyField(Topping, null=True, blank=True, related_name='pizzas')

class Topping(models.Model):
    name = models.CharField(max_length=50, unique=True)
    price = models.IntegerField(default=0)

serializer.py:

代码语言:javascript
运行
复制
class ToppingSerializer(serializers.ModelSerializer):
    class Meta:
        model = Topping
        fields = '__all__' 

这是可行的,但它不包括相关的领域。

代码语言:javascript
运行
复制
 fields = ['name', 'price', 'pizzas'] 

这和我想要的完全一样,但是当Toppings模型有很多字段时会发生什么。我想做这样的事情:

代码语言:javascript
运行
复制
fields = ['__all__', 'pizzas']

此语法将导致错误,说明如下:

字段名__all__对模型无效

有没有办法达到通缉的行为?或者在使用相关名称时必须手动键入字段?

EN

Stack Overflow用户

回答已采纳

发布于 2016-11-01 15:42:44

我刚刚检查了Django Rest Framework的源代码。您想要的行为在框架中似乎不受支持。

fields选项必须是一个列表、一个元组或文本__all__

下面是相关源代码的片段:

代码语言:javascript
运行
复制
    ALL_FIELDS = '__all__'
    if fields and fields != ALL_FIELDS and not isinstance(fields, (list, tuple)):
        raise TypeError(
            'The `fields` option must be a list or tuple or "__all__". '
            'Got %s.' % type(fields).__name__
        )

您不能在元组或包含字段的列表中添加“all”。

票数 31
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38245414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档