【发布时间】:2016-04-27 04:07:40
【问题描述】:
我已经发了很多帖子,DRF 文档(需要很多的爱),但我还没有找到如何在没有复杂的混乱的情况下做到这一点。
我需要这个输出:
[{"id":1,"name":"memcheck","subscribers":["foo", "bar"]}]
如果我采用 DRF 方式(或者至少文档如何指出我如何去做),那么我会得到以下输出:
[{"id":1,"name":"memcheck","subscribers":["Subscriber object", "Subscriber object"]}]
我尝试取消注释并使用第二个选项,然后得到以下输出:
[{"id":1,"name":"memcheck","subscribers":[{"name": "foo"}, {"name": "bar"}]}]
models.py
>class Subscriber(models.Model):
name = models.CharField(max_length=100)
class Check(models.Model):
name = models.CharField(max_length=100)
description = models.TextField(null=True, blank=True)
subscribers = models.ManyToManyField(Subscriber)
serializers.py
>class SubscriberSerializer(serializers.ModelSerializer):
name = serializers.CharField()
class Meta:
fields = ('name', )
class CheckSerializer(serializers.ModelSerializer):
# using source=('name') or variants like: 'subscribers__name', 'subscribers.name'
# doesnt work
subscribers = serializers.ListSerializer(child=serializers.CharField())
# subscribers = SubscriberSerializer(many=True) # --> see 2nd output
class Meta:
model = Check
fields = ('id', 'name', 'subscribers')
在 ManyToMany 的其他情况下,我想要一个 dict 列表,但在这种情况下,我只想要一个名称为 attr.. 的简单列表。为什么这样做太难了?
【问题讨论】:
标签: python django django-rest-framework