У меня возникли проблемы с сохранением связанных объектов с 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.
Черт, я рассматривал эту проблему под другим углом. Спасибо – ivica
Извините, пришлось «отменить ответ», потому что он отвечает только на часть проблемы. Я отредактировал вопрос. – ivica