我有两个模型,一个是M2M关系,另一个是相关名称.我想在序列化程序和相关字段中包含all个字段.

Models.py:

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:

class ToppingSerializer(serializers.ModelSerializer):
    class Meta:
        model = Topping
        fields = '__all__' 

这是可行的,但不包括相关字段.

 fields = ['name', 'price', 'pizzas'] 

这完全是我想要的,但是当浇头模型有很多字段时会发生什么呢?我想做一些类似的事情:

fields = ['__all__', 'pizzas']

此语法会导致以下错误:

字段名称__all__对于模型无效

有没有办法实现想要的行为?或者在使用相关名称时必须手动键入字段?

推荐答案

我刚刚判断了Django 睡觉框架的源代码. 框架似乎不支持您想要的行为.

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

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

    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’额外添加到带有字段的元组或列表中.

Django相关问答推荐

django命令中的no_color不起作用

Django显示交叉表格

我如何告诉Django如何恢复自定义迁移?

如何在Django REST框架中实现ForeignKey搜索

Pytest-django - 测试创建和传递所需的用户对象

查询 django 模型以找到当月最好的公司销售

如果一个应用程序有多个具有相同字段的模型,那么保持 DRY 的最佳实践是什么?

使用 south 重构具有继承的 Django 模型

Django PositiveIntegerField 中的 0 值?

AttributeError:'Manager'对象在Django中没有属性'get_by_natural_key'错误?

根据模型属性获取django对象id

从python中的URL获取查询字符串的最佳方法?

relation "django_site" does not exist

如何将 Django forms.ChoiceField 呈现为 Twitter Bootstrap 下拉菜单

django - 如何在验证之前处理/清理字段

如何在 django admin 中显示布尔属性

PyCharm 无法正确识别需求 - Python、Django

保存前向 ModelForm 对象添加数据

响应发送到客户端后在 Django 中执行代码

想要在 Django 测试中禁用信号