2013-08-16 3 views
3

Попытка вставить данные в мою таблицу в моей базе данных с помощью Django. Это моя модель для таблицы я пытаюсь вставить:django вставка в базу данных Oracle недействительный идентификатор

class RunableFilters(models.Model): 
    equipment_id = models.BigIntegerField(null=True, blank=True) 
    filter_file_name = models.CharField(max_length=255, blank=True) 
    last_updated = models.CharField(max_length=255, blank=True) 
    class Meta: 
     db_table = 'runable_filters' 

Я получаю ошибку:

>>> from books.models import RunableFilters 
>>> p1 = RunableFilters(equipment_id = '123456778', filter_file_name = "test_file_name", last_updated = "2013-16-8") 
>>> p1.save() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\django\db\models\base.py", line 546, in save 
    force_update=force_update, update_fields=update_fields) 
    File "C:\Python27\lib\site-packages\django\db\models\base.py", line 650, in save_base 
    result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw) 
    File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 215, in _insert 
    return insert_query(self.model, objs, fields, **kwargs) 
    File "C:\Python27\lib\site-packages\django\db\models\query.py", line 1675, in insert_query 
    return query.get_compiler(using=using).execute_sql(return_id) 
    File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 937, in execute_sql 
    cursor.execute(sql, params) 
    File "C:\Python27\lib\site-packages\django\db\backends\util.py", line 41, in execute 
    return self.cursor.execute(sql, params) 
    File "C:\Python27\lib\site-packages\django\db\backends\oracle\base.py", line 717, in execute 
    six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2]) 
    File "C:\Python27\lib\site-packages\django\db\backends\oracle\base.py", line 710, in execute 
    return self.cursor.execute(query, self._param_generator(params)) 
DatabaseError: ORA-00904: "RUNABLE_FILTERS"."ID": invalid identifier 

Вот таблицы в моей БД

enter image description here

+0

работает питон 32bit 2.7 и Джанго 1.5.2 – shreddish

+0

Было что DB, созданный Джанго 'syncdb' команда? Если нет, покажите нам свою схему таблиц. –

+0

, что БД была устаревшей БД и была создана и структурирована alrady вместе с таблицей RunableFilters, я запустил checkdb для создания Модели для таблицы .. добавлена ​​схема для таблицы – shreddish

ответ

4

Это проблема, django ожидает, что поле PK под названием id

Y ou может легко решить эту проблему, узнать об интеграции устаревших баз данных: https://docs.djangoproject.com/en/dev/howto/legacy-databases/.

Для вашего кода найдите первичный ключ и сообщите об этом django. Le'ts supose equipment_id может выступать в качестве рк:

class RunableFilters(models.Model): 
    equipment_id = models.BigIntegerField(primary_key=True) #<-- here 
    filter_file_name = models.CharField(max_length=255, ... 

Если у вас есть составное рк, то прочитайте этот пост: https://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys

+0

буквально просто попытался добавить hardware_id в качестве первичного ключа, и он работал прямо перед тем, как я проверил это. Собирался написать ответ. Спасибо вам за помощь – shreddish

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