2015-12-13 4 views
0

У меня возникли проблемы с сохранением связанных объектов с Django Rest Framework. Вот мои моделиСохранение связанных объектов

# models.py 
class PowerStatus(models.Model): 
    status = models.CharField(max_length=50) 

class VirtualMachine(models.Model): 
    power_status = models.ForeignKey(PowerStatus, verbose_name='Power status') 

Мои сериализаторов выглядеть следующим образом:

# serializers.py 
class PowerStatusSerializer(serializers.ModelSerializer): 
    status = serializers.CharField(max_length=30) 

    class Meta: 
     model = PowerStatus 

class VMSerializer(serializers.ModelSerializer): 
    power_status = PowerStatusSerializer() 

    class Meta: 
     model = VirtualMachine 

    def create(self, validated_data): 
     power_status_data = validated_data.pop('power_status') 
     vm = VirtualMachine.objects.create(**validated_data) 
     PowerStatus.objects.create(vm=vm, **power_status_data) 

     return vm 

ошибка, я получаю: django.db.utils.IntegrityError: (1048, "Column 'power_status_id' cannot be null")

Я следовал http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-nested-objects, но я делаю что-то неправильно.

: EDIT:

Разобравшись с Column cannot be null, возникла еще одна проблема;

ValueError: Cannot assign "OrderedDict([('status', 'Running')])": "VirtualMachine.power_status" must be a "PowerStatus" instance.

ответ

1

В модели виртуальная машина частот нуль = True в power_status поле.

class VirtualMachine(models.Model): 
    power_status = models.ForeignKey(PowerStatus, verbose_name='Power status', null=True) 
+0

Черт, я рассматривал эту проблему под другим углом. Спасибо – ivica

+0

Извините, пришлось «отменить ответ», потому что он отвечает только на часть проблемы. Я отредактировал вопрос. – ivica

Смежные вопросы