Почему я не могу добавить отношение ManyToMany к объекту в Django? - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть 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

Как видно из последней строки, типы не добавляются.

Что я здесь не так делаю? Все советы приветствуются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...