django DRF 字段多对多,"through='Membership'"手动指定表.通过 serializers.ModelSerializer 序列化 Group 表后,不能在 Group 下对"members "多对多的数据进行添加,"members"该字段属性显示"read_only": true.我找了一天没找到解决办法,请求帮助! 另外发现如果 ManyToMany 的表是自动生成的就没有这个问题.
#model.py
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __str__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
#serializers.py
from rest_framework import serializers
from .models import Group
class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
fields = ('name','members')
#views.py
from django.shortcuts import render
from rest_framework import viewsets
from .models import Group,Membership
from .serializers import GroupSerializer
# Create your views here.
class GroupViewSet(viewsets.ModelViewSet):
queryset = Group.objects.all()
serializer_class = GroupSerializer
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.