用于向设备添加标签的API

时间:2017-02-23 00:37:55

标签: python django python-3.x django-models django-rest-framework

我正在尝试添加将邮件移动到自定义创建标签或已制作标签的gmail功能。这是标签功能的举措。当您选择邮件然后单击移动到标签操作时,您将看到许多预定义的标签名称,例如重要,短信,个人,工作等,还会在下拉列表中创建新标签。我想要获取,发布和删除。我是在正确的轨道上吗?

这是我的模特

class Device(BaseDevice):
"""
This stores Device
"""
# Description is optional (can be blank, can be null)
description = models.TextField(blank=True, null=True)
created_on = models.DateTimeField(auto_now_add=True)
updated_on= models.DateTimeField(auto_now=True)

def __str__(self):
    return self.name

class Label(models.Model):
    """
    This creates a label
    """
    # Name is required
    name = models.CharField(max_length=250, blank=False, null=False)
    device = models.ForeignKey(Device, related_name='label')

串行器

class IOSerializer(serializers.ModelSerializer):
    id = serializers.UUIDField(source='token', format='hex')
    class Meta:
        model = IO
        fields = ('id', 'name', 'description', 'type')

class LabelSerializer(serializers.ModelSerializer):
    id = serializers.UUIDField(source='token', format='hex')
    class Meta:
      model = Label 
      fields = ('id', 'name')

class DeviceSerializer(serializers.ModelSerializer):
    id = serializers.UUIDField(source='token', format='hex', read_only=True)
    label = LabelSerializer(read_only=False, many=True, required=False)
    io = IOSerializer(read_only=False, many=True, required=False)

    class Meta:
        model = Device
        fields = ('id', 'name', 'description', 'io', 'label')

    def save_io(self, device, io):
        for io in io:
            token = io.pop('token', None)
            if token is None:
                IO.objects.create(device=device, **io)
            else:
                IO.objects.filter(token=token, device=device).update(**io)

    def update(self, instance, validated_data):
        io = validated_data.pop('io',[])
        instance = super(DeviceSerializer, self).update(instance, validated_data)

        if len(io):
            self.save_io(instance, io)

        return instance

    def create(self, validated_data):
        io = validated_data.pop('io',[])
        instance = super(DeviceSerializer, self).create(validated_data)
        if len(io):
            self.save_io(instance, io)

        return instance

0 个答案:

没有答案