Добавление базы данных 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