1 回答

TA貢獻1802條經驗 獲得超5個贊
您可能需要更改模型以允許 roster 有多個成員,或者為 roster 執行多對多或將 FK 關系放在用戶身上。因此,您可以為一個名冊添加多個成員。
為此,您可以使用這樣的自定義路線。下面顯示 add_member 和 remove_member 類似,修改為從 members_set 中刪除名冊對象。
class RosterViewSet(viewsets.ModelViewSet):
queryset = Roster.objects.all().order_by('-id')
serializer_class = RosterSerializer
@action(detail=True, methods=['post'])
def add_member(self, request, pk=None):
errors = []
response = {}
roster = self.get_object()
members_dict = request.data['members']
if not isinstance(members_dict, list):
errors.append("Invalid request format")
else:
for id in members_dict:
try:
member = User.objects.get(pk=id)
roster.members.add(member)
roster.save()
status_code = status.HTTP_200_OK
except Member.DoesNotExist:
errors.append("Member id {} not found".format(id))
if errors:
response['errors'] = errors
status_code = status.HTTP_400_BAD_REQUEST
return response.Response(response, status=status_code)
添加回答
舉報