makemigrations не создает модель корыта - PullRequest
1 голос
/ 17 июня 2019

Я внес изменения в одну из моих моделей в своем проекте и перенесен, makemigrations не работает должным образом.Перестройка базы данных создает только 2 из 3 таблиц из моего models.py, и я не могу понять проблему.

Есть два разных приложения;«блог» и «пользователи».оба зарегистрированы в файле setting.py.

Я полностью удалил базу данных и удалил папки миграции.затем я попробовал следующее:

django makemigrations blog 
django migrate blog

выполнение глобального django makemigrations не имеет никакого эффекта, никаких изменений не обнаружено.

вот соответствующий файл models.py из «блога»:

class Room(models.Model):
   roomname = models.CharField(max_length=6, unique=True)
   roomeditors=models.ManyToManyField(User,related_name='rooms_user_can_edit', blank=True)
   displayadmin=models.ForeignKey(User, 
   related_name='room_user_is_displayadmin',null=True, on_delete=models.SET_NULL)

    def __str__(self):
        return self.roomname



class Post(models.Model):
    title = models.CharField(max_length=40)
    content = models.TextField(max_length=300)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    rooms = models.ManyToManyField(Room, related_name='roomposts', through='Display')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
      return "/post/{}/".format(self.pk)

class Display(models.Model):
    class Meta:
        auto_created = True
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    room = models.ForeignKey(Room, on_delete=models.CASCADE)
    isdisplayed = models.BooleanField(default=0)

    def __str__(self):
        return str(self.isdisplayed)

каждая таблица создается за исключением отображения.вывод:

Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model Room
    - Create model Post

1 Ответ

1 голос
/ 17 июня 2019

Вы даете auto_created = True в мета-классе вашей модели, что не рекомендуется и не документировано. Здесь - список всех возможных мета-опций, которые вы можете задать внутри вашей модели.

Официальная документация говорит:

auto_created: логический флаг, который указывает, было ли поле создано автоматически, например, OneToOneField, используемый для наследования модели.

Если передать это в Meta, Django воздержится от создания этой модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...