LINUX.ORG.RU

[django] Экземпляр модели с пустым pk

 


0

1

Как такое может быть:

 
> obj = MyModel()
> obj.field1 = val1
> obj.field2 = val2
> obj.save() # все сохранилось!
> obj
<MyModel: MyModel object>
> obj.pk
        #тут пусто!
> obj.id is None
True # как так?
> obj.delete()
AssertionError: MyModel object can't be deleted because its id attribute is set to None.
При этом в таблице появляется запись с установленным id.

Проблемы только с одной моделью. Причем, она ничем не отличается от остальных, никакие методы не переопределены. В результате, объект, ссылающийся на данную модель не получается сохранить.

БД Oracle, если что.


>никакие методы не переопределены
мы видим что __unicode__ отсуствует =)

модель как выглядит? и может быть это проблема субд

fr_butch
()
Ответ на: комментарий от fr_butch

модель как выглядит? и может быть это проблема субд

Обычная модель. Запись в бд создается, с нормальным id. В MyModel.objects.all() она тоже есть. Но вот MyModel.objects.get(pk=obj.id) уже не работает :)

Хз куда копать вообще.

o
() автор топика

Видимо функция, которая должна сообщать джанге id сохраненной в БД записи возвращает None. Я бы полез в код пакета django.db и хотябы print'ами отследил момент где теряется id. Вообще мне кажется что проблема на стороне СУБД (не выданы гранты, кривые хранимые процедуры или что нибудь в таком духе)

anonymous
()

Короче поменял в модели

id = models.IntegerField(...)
на
id = models.AutoField(...)
и вроде начало работать %)

django.VERSION = (1, 2, 5, 'final', 0)

Всем спасибо.

o
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.