2017-01-31 16 views
1

У меня есть модель MyModel в django, одно из полей которой получает значение из последовательности после вставки в Oracle 12c. Итак, я делаюКак сохранить модель в django, когда некоторые поля заполняются последовательностью в oracle?

myModel = MyModel(field1=123,field2='abc') 
myModel.save() 

Проблема в том, что поле1 получает свое значение при вставке в базу данных Oracle. Если я опускаю поле, попробуйте сохранить ORA-01400: не могу вставить NULL. Я не могу дать поле значение в джанго. Как сохранить модель? Благодарю.

+0

Является ли ваше 'поле1' определяемым как' AutoField'? –

+0

все мои поля были сгенерированы при запуске inspectdb, потому что я работаю с устаревшей базой данных. –

+0

Итак, ваше поле было отображено как «IntegerField»? –

ответ

0

Попробуйте изменить field1 на AutoField, поэтому каждый раз, когда вы сохраняете новый объект, Oracle назначает последовательное значение.

field1 = models.AutoField() 

Если это ваш первичный ключ затем передать primary_key=True аргумент в AutoField конструктора.

UPDATE

При использовании устаревших баз данных, вы должны удалить отображенные поля, которые являются последовательностями в базе данных, поэтому Django делает работу по поиску способа работы с этими полями.

+0

Спасибо за вашу помощь. После изменения моей модели для использования Autofield все еще возникают проблемы. Когда я создаю экземпляр myModel, я попытался исключить поле1 таким образом: myModel = Model (field2 = 'abc'), но я все равно получаю ORA-01400: не могу вставить ошибку NULL. –

+0

Является ли ваше поле идентификатором? Я имею в виду, если это так, просто удалите его из модели. Смотрите это: http://stackoverflow.com/a/41591660/6855686 –

+0

Блестящий. Спасибо за вашу помощь! –