2017-03-04 16 views
1

デバイスにグループを送信するためのDeviceGroupクラスとAPIViewクラスがあるとします。インスタンスをDRFのシリアライザに渡すのは妥当ですか?

DeviceGroupためのシリアライザは、上記のポスト機能で

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 post(self, request, token=None, format=None): 
     print('reqquest', request.data) 
     print('token', token) 
     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() 

あり、それが応答を返すその後、シリアライザのインス​​タンスを作成し、シリアライザが有効であるかどうかを確認する義務があります。

デバイスとDeviceGroupとの関係は、デバイスが一つのグループだけにすることができ、グループは、複数のデバイス(デバイスIDのリスト)を持つことができている

私が投稿するDeviceGroupSerializerを使用する必要がある場合は、ポスト機能はどうあるべきかデバイスのリスト?私はこのシリアライザを理解しておらず、明確な部分を見ていました。

答えて

0

Django RESTフレームワークは疎結合されているため、シリアライザをバイパスできます。

しかし、あなたがやっていることによっては、これにはいくつかの作業が必要な場合があります。 POSTの場合は、代わりに自分でいくつかのチェックを実行することができます。

Django RESTフレームワークパフォーマンス最適化のTom Christys postは、フレームワークの一部を削除する方法を示しています。

+0

他に何ができるのかわかりますか? – pythonBeginner

+0

これはあなたがやろうとしていることにあまりにも依存するので、これは不可能です。さらに、リンクはそれを達成するのに十分以上のものを提供します。 – Linovia

関連する問題