我有两个模型,一个有M2M关系和一个相关的名称。我希望在序列化程序和相关字段中包括所有字段。
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'] 这和我想要的完全一样,但是当Toppings模型有很多字段时会发生什么。我想做这样的事情:
fields = ['__all__', 'pizzas']此语法将导致错误,说明如下:
字段名
__all__对模型无效
有没有办法达到通缉的行为?或者在使用相关名称时必须手动键入字段?
发布于 2016-11-01 15:42:44
我刚刚检查了Django Rest Framework的源代码。您想要的行为在框架中似乎不受支持。
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”。
https://stackoverflow.com/questions/38245414
复制相似问题