Добавление базы данных Legacy sqlite3 в модель Django без первичного ключа

Я добавляю унаследованную sqlite3 базу данных с 6 таблицами. 3 из этих таблиц имеют поле первичного ключа, и я могу получить доступ к данным через панель администратора... все хорошо

Однако, остальные 3 не имеют столбца первичного ключа, который выдает ошибку no such column: table1.id когда я пытаюсь получить доступ к таблице через панель администратора.

Я обнаружил, что sqlite3 добавляет скрытый rowid ко всем таблицам, поэтому я могу получить доступ к rowid, используя select rowid * from table1

Попробовал добавить rowid как поле в модель table1 следующим образом:

class table1(models.Model):
    rowid = models.IntegerField(primary_key=True, editable=False)
    order_id = models.ForeignKey(Demand, null=True, on_delete= models.SET_NULL)
    product_id = models.ForeignKey(Product, null=True, on_delete= models.SET_NULL)
    quantity = models.IntegerField(default=1)

Теперь, когда я пытаюсь запустить ./manage.py makemigrations

Я столкнулся с проблемой, говорящей: It is impossible to add a non-nullable field 'rowid' to table1 without specifying a default. This is because the database needs something to populate existing rows

Но, насколько я понимаю, в базе данных уже есть заполненные строки... поэтому я не уверен, что происходит. Любая помощь будет принята с благодарностью!

Единственное, что я нашел в сети, что связано с этим, это обсуждение в google, которое называет этот способ халтурным, но я не знаю другого способа... и этот способ работает для пользователя по ссылке ниже, но не работает для меня :/ : https://groups.google.com/g/django-developers/c/VhGkXcI_bgY

Вернуться на верх