내 API의 디자인이 GET API의 결과입니다포스트 목록
{
"id": "667c476ca953483493afa265e5d500b0",
"name": "Home"
}
입니다. 게시 할 때 장치 목록을 게시하고 싶습니다. 예를 들어 사용자가 기기를 홈 그룹에 게시하려는 경우 내가 설계 한 URL은/group/group_token/add (/ group/667c476ca953483493afa265e5d500b0/add)입니다. 데이터 전송 형식은 내 모델, 시리얼 라이저와 APIView는 내가
class BaseDevice(PolymorphicModel):
name = models.CharField(max_length=250, blank=False, null=False)
owner = models.ForeignKey(User, blank=False, null=False)
token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
group = models.ForeignKey('DeviceGroup', related_name="groups", null=True, blank=True)
class Device(BaseDevice):
description = models.TextField(blank=True, null=True)
class DeviceGroup(models.Model):
token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
name = models.CharField(max_length=250, blank=False, null=False)
owner = models.ForeignKey(User, blank=False, null=False)
class DeviceGroupSerializer(serializers.ModelSerializer):
id = serializers.UUIDField(source='token', format='hex', read_only=True)
class Meta:
model = DeviceGroup
fields = ['id','name']
class DevicesGroupsAPIView(APIView):
permission_classes = (permissions.IsAuthenticated,)
def get_serializer_class(self):
if self.request.user.is_staff:
return DeviceGroupSerializer
def get_object(self, user, token):
try:
return BaseDevice.objects.filter(owner=user).get(token=token)
except ObjectDoesNotExist:
return error.RequestedResourceNotFound().as_response()
def get(self, request, format=None):
reply = {}
try:
groups = DeviceGroup.objects.filter(owner=request.user)
reply['data'] = DeviceGroupSerializer(groups, many=True).data
except:
reply['data'] = []
return Response(reply, status.HTTP_200_OK)
def post(self, request, token=None, format=None):
device_group_instance = DeviceGroup.objects.get(token=token)
for device_token in request.data['devices']:
device = Device.objects.get(token=device_token, owner=request.user)
device.group = device_group_instance
device.save()
어떻게 내가 게시 할 수있는 지금까지 수행 한 다음
{
"devices":[<device_id1>, <device_id2>]
}
i.e
{
"devices":"[5ac41ba7e6ae4628982b2c81c99343a8], [7nu21ba7e6ae4628982b2c81c99343a8]"
}
입니까? 토큰 부분에 오류가 발생합니다. 그것은 말합니다
장치 그룹 일치하는 쿼리가 존재하지 않습니다.
게시 방법
UPDATE
프리스트 스크린 샷 URL입니다 device_group /입니다. 내가 거기에서 게시하려고 할 때. 내가 쿼리를 일치하지 않는 오류 위 얻을 하나
두 번째 스크린 샷
URL이 스크린 샷 브라우저입니다. 나는 오히려 나는 이름 필드를 볼 수있는 장치 목록을 게시하지 않습니다.
은 어떻게 든, 당신은'기능을 당신의'포스트()를 통해 유효한 토큰을 제공 (또는 함수 내에서 검색)해야합니다. –
죄송 합니다만 이해하지 못했습니다. 예를 보여 주시겠습니까? – milan