django // 1054, неизвестный столбец 'rank.post_id_id' в 'списке полей' " - PullRequest
0 голосов
/ 23 сентября 2019

django = 2.2.3 mariadb

Эта ошибка возникает после импорта модели из существующей базы данных с «inspectdb» и измененными свойствами поля.

class Post(models.Model):
    post_id = models.AutoField(primary_key=True)
    post_name = models.CharField(max_length=255, blank=True, null=True)
    email = models.CharField(max_length=255, blank=True, null=True)

class Rank(models.Model):
    rank_id = models.AutoField(primary_key=True)
    rank_type = models.IntegerField(blank=True, null=True)
    created_at = models.DateTimeField()
    # post_id = models.IntegerField(blank=True, null=True)
    post_id = models.ForeignKey(Post, on_delete=models.SET_NULL, blank=True, null=True)

Первоначально это было # post_id,но я удалил «managed = False», изменил его на ForeignKey и затем «мигрировал».Насколько я знаю, если "post_id" в модели "Post" имеет значение "primary_key True", он заменяет значение "id" на "post_id".Но «Django» продолжает вызывать «post_id_id».Нет команды для ссылки на post_id_id в другом месте.Если у вас есть решение или что-то, чего мне не хватает, дайте мне несколько советов.

------- Добавить еще после комментариев Даниэля Роузмана --------

class Post(models.Model):
    post_id = models.AutoField(primary_key=True)
    post_name = models.CharField(max_length=255, blank=True, null=True)
    email = models.CharField(max_length=255, blank=True, null=True)

class Gallery(models.Model):
    uid = models.AutoField(prymary_key=True)
    gallery_name = models.CharField(...)


class Rank(models.Model):
    rank_id = models.AutoField(primary_key=True)
    rank_type = models.IntegerField(blank=True, null=True)
    created_at = models.DateTimeField()
    # post_id = models.IntegerField(blank=True, null=True)
    post_id = models.ForeignKey(Post, on_delete=models.SET_NULL, blank=True, null=True)
    # uid = models.IntegerField(blank=True, null=True)
    uid = models.ForeignKey(Gallery, on_delete=models.SET_NULL, blank=True, null=True)

1 Ответ

0 голосов
/ 23 сентября 2019

Не называйте свой ForeignKey post_id.Назовите это post.Базовое поле базы данных: post_id;Django автоматически добавляет суффикс _id.

...