可以读/写。(无额外字段)。
可以阅读使用中间 ManyToMany模型(带额外字段)。
使用中间 ManyToMany模型(带有额外字段)时,无法编写。
由于DRF缺乏对可写嵌套字段的支持而失败。
但是,DRF确实支持编写标准ManyToMany模型的嵌套pk;额外的字段不应该对操作添加歧义。
使用标准时,读/写:ManyToMany模型的工作原理如下:
models.py
class Person(models.Model):
person = models.CharField(max_length=64)
class Group(models.Model):
group = models.CharField(max_length=64)
persons = models.ManyToManyField(Person)
serializers.py
class GroupSerializer(serializers.ModelSerializer):
persons = serializers.PrimaryKeyRelatedField(many=True, queryset=Person.objects.all())
class Meta:
model = Group
fields = ('id', 'group', 'persons')
使用中间时,阅读:ManyToMany模型的工作原理如下:
models.py
class Person(models.Model):
person = models.CharField(max_length=64)
class Group(models.Model):
group = models.CharField(max_length=64)
persons = models.ManyToManyField(Person, through='Membership')
class Membership
date = DateField()
group = models.ForeignKey(Person, on_delete=models.CASCADE)
person = models.ForeignKey(Group, on_delete=models.CASCADE)
serializers.py
class MembershipSerializer(serializers.ModelSerializer):
class Meta:
model = Membership
fields = ('id', 'date', 'group', 'person')
class GroupSerializer(serializers.ModelSerializer):
memberships = MembershipSerializer(source='membership_set', many=True)
class Meta:
model = Group
fields = ('id', 'group', 'memberships')
使用中间 ManyToMany模型时写的解决方案是什么?
寻找我错过的明显事物;我宁愿不实现自定义的create()和update()方法。