Django DRF 3-为多对多表创建端点
我是django rest框架的新手,我试图了解如何创建端点来创建和更新多对多关系表 models.pyDjango DRF 3-为多对多表创建端点,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,我是django rest框架的新手,我试图了解如何创建端点来创建和更新多对多关系表 models.py class OnlineClass(models.Model): ... teacher = models.ForeignKey(to=User, related_name='online_class', on_delete=models.CASCADE) students = models.ManyToManyField(to=User, through='Enro
class OnlineClass(models.Model):
...
teacher = models.ForeignKey(to=User, related_name='online_class', on_delete=models.CASCADE)
students = models.ManyToManyField(to=User, through='Enrollment')
...
class Enrollment(models.Model)
online_class = models.ForeignKey(OnlineClass, on_delete=models.CASCADE)
participant = models.ForeignKey(User, on_delete=models.CASCADE)
对于用户模型,我从django的基本用户模型扩展了它
序列化程序.py
class OnlineClassSerializer(serializers.ModelSerializer):
participants = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(),many=True)
class Meta:
model = OnlineClass
fields = [
...
'participants',
]
extra_kwargs = {'participants': {'required': False,},}
class EnrollmentClassSerializer(serializers.ModelSerializer):
online_class = OnlineClassSerializer(many=True)
participant = UserSerializer(many=True)
class Meta:
model = Enrollment
fields = ['id','online_class','participant']
views.py
class OnlineClassListAPIView(ListCreateAPIView):
serializer_class = OnlineClassSerializer
queryset = OnlineClass.objects.all()
permission_classes = (permissions.IsAuthenticated,)
def perform_create(self, serializer):
return serializer.save(owner=self.request.user)
def get_queryset(self):
return self.queryset.all()
class OnlineClassDetailsAPIView(RetrieveUpdateDestroyAPIView):
serializer_class = OnlineClassSerializer
permission_classes = (permissions.IsAuthenticated, IsOwner,)
queryset = OnlineClass.objects.all()
lookup_field = "id"
def get_queryset(self):
return self.queryset.all()
现在我想做的是通过向注册表中添加数据来创建一个端点,将参与者添加到OnlineClass表中,我一直在寻找其他解决方案,但我得到的只是在创建OnlineClass时添加参与者,但我想做的是在类和用户数据已经存在时添加参与者
我可以使用补丁端点添加参与者,但要做到这一点,我必须获得我不想向客户端公开的现有参与者列表
我不知道从哪里开始,也不知道如何处理这个问题