У меня есть модель Django, в которой нет поля для 'id', но в моем экземпляре MySQL из предыдущей миграции по какой-то причине отображается поле 'id'. Я продолжал получать сообщение об ошибке:
You are trying to add a non-nullable field 'id' to discussions without a default; we can't do that (the database n
eeds something to populate existing rows).
Итак, я пошел и проверил мой models.py
файл, у которого нет поля 'id':
class Discussions(models.Model):
#team_id = models.ForeignKey(Teams, null=True, on_delete=models.CASCADE)
login = models.CharField(max_length=30, null=True)
uid = models.PositiveIntegerField(primary_key=True)
title = models.CharField(max_length=30, null=True)
body = models.CharField(max_length=500, null=True)
comments = models.CharField(max_length=30, null=True)
updated_at = models.CharField(max_length=21, null=True)
Но это проявляется в моем операторе MySQL describe
:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| login | varchar(30) | YES | | NULL | |
| comments | varchar(30) | YES | | NULL | |
| updated_at | varchar(21) | YES | | NULL | |
| body | varchar(500) | YES | | NULL | |
| title | varchar(30) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
и когда я отбрасываю таблицу для повторной синхронизации базы данных, я получаю сообщение об ошибке:
django.db.utils.ProgrammingError: (1146, "Table 'my_project.app_discussions' doesn't exist")
В идеале я хотел бы иметь какой-нибудь способ получить мою переменную uid
в моем представлении для фактической загрузки в мой экземпляр БД, где представлено поле id
.
# tree->tuples->list of tuples
json_tree = objectpath.Tree(data)
login = tuple(json_tree.execute("$..login"))
uid = tuple(json_tree.execute("$..id"))
title = tuple(json_tree.execute("$..title"))
body = tuple(json_tree.execute("$..body"))
comments = tuple(json_tree.execute("$..comments_count"))
updated_at = tuple(json_tree.execute("$..updated_at"))
# took out `uid`
parsed_list = list(zip(login, uid, title, body, comments, updated_at))
# LOADING PHASE
load_data = []
# took out `u`
for l, t, i, b, c, u in zip(login, uid, title, body, comments, updated_at):
load_data.append(Discussions(l, t, i, b, c, u))
Discussions.objects.bulk_create(load_data)
Почему я не могу перенести эту новую схему в MySQL? Почему это поле uid
не отображается через ORM в поле идентификатора после того, как оно было у меня раньше? Спасибо за любую помощь.