У меня есть API, созданный в Django, в котором две модели связаны отношением ManyToMany.
class Type(models.Model):
name = models.CharField(max_length=64)
application = models.CharField(max_length=64)
description = models.TextField()
class Device(models.Model):
reference = models.CharField(max_length=64)
application = models.CharField(max_length=64)
types = models.ManyToManyField(to='Type')
Я использую Django Rest Framework, в котором у меня есть метод create()
в сериализаторе добавить types
к device
.
def create(self, validated_data):
# Serialize Types
types_data = validated_data.pop('types')
device = Device.objects.create(**validated_data)
print("DEVICE TYPE",type(device))
for type_data in types_data:
print("TYPE OF TYPE_DATA", type(type_data))
print("TYPE_DATA", type_data)
t = Type.objects.create(device=device, **type_data)
print("TYPE", t)
device.types.add(t)
print("TYPES IN OBJECT", device.types)
device.save()
return device
К сожалению, это не похоже на работу. У меня есть некоторые операторы печати в приведенном выше коде, и результат этого таков:
DEVICE TYPE <class 'iot.models.Device'>
TYPE OF TYPE_DATA <class 'collections.OrderedDict'>
TYPE_DATA OrderedDict([('name', 'Serve north.'), ('application', 'Particular outside.'), ('description', 'Teacher rather.')])
TYPE Type object (1)
TYPES IN OBJECT iot.Type.None
Как видно из последней строки, типы не добавляются.
Что я здесь не так делаю? Все советы приветствуются!