Django inspectdb не создает первичные ключи
Когда я запускаю python manage.py inspectdb --database totals > modelstest.py, он работает, как ожидалось, и я получаю свои модели, но он не создает первичные ключи и не добавляет поле id, хотя все, что я могу найти в Интернете, говорит, что это так. Я зашел в файл настроек и добавил DEFAULT_AUTO_FIELD='django.db.models.AutoField', но теперь, когда я пытаюсь мигрировать снова, мигрировать некуда, я промыл базу данных и попытался мигрировать снова, но это ничего не дало, я немного запутался, как я могу мигрировать снова, чтобы включить эту автоматическую настройку полей?
Сгенерированная модель:
class Nbav8(models.Model):
home_team_field = models.TextField(db_column='HOME TEAM:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
away_team_field = models.TextField(db_column='AWAY TEAM:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
projected_points_field = models.FloatField(db_column='PROJECTED POINTS:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
home_injury = models.TextField(db_column='Home Injury', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
away_injury = models.TextField(db_column='Away Injury', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
game_points_with_formula_field = models.BigIntegerField(db_column='GAME POINTS WITH FORMULA:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
game_money_line_field = models.FloatField(db_column='GAME MONEY LINE:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
over_or_under = models.TextField(db_column='OVER OR UNDER', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
class Meta:
db_table = 'nbav8'
Удалено управляемое поле согласно комментарию.
Итак, я смог заставить это работать, добавив автоматически увеличивающееся поле id в базу данных mysql. Я также настроил модель как managed = True
class Nbav8(models.Model):
home_team_field = models.TextField(db_column='HOME TEAM:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
away_team_field = models.TextField(db_column='AWAY TEAM:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
projected_points_field = models.FloatField(db_column='PROJECTED POINTS:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
home_injury = models.TextField(db_column='Home Injury', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
away_injury = models.TextField(db_column='Away Injury', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
game_points_with_formula_field = models.BigIntegerField(db_column='GAME POINTS WITH FORMULA:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
game_money_line_field = models.FloatField(db_column='GAME MONEY LINE:', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
over_or_under = models.TextField(db_column='OVER OR UNDER', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
class Meta:
managed = True
db_table = 'nbav8'
Теперь у меня есть пк из автоинкрементирующего поля id из моей базы данных, обратите внимание, что оно не отображается как поле модели, это меня тоже смущало, но оно есть как первичный ключ.