django migrations 移行を試みるときに「次のコンテンツタイプは古く、削除する必要があります」というメッセージが表示される。 これはどういう意味ですか、どうすれば解決できますか?



django reset migrations (1)

表示されるメッセージは、モデルを削除または削除して移行を実行したときに表示されます。

ほとんどの場合、それらを安全に削除できます。 ただし、場合によってはデータが失われる可能性があります。 他のモデルに削除されたモデルへの外部キーがある場合、これらのオブジェクトも削除されます。

これは、古いコンテンツタイプをより安全に削除することを要求するdjangoチケットです。

編集

@ x-yuriが指摘したように、このチケットは修正されDjango 1.11でリリースされました。

これは私のmodels.pyです:

class Notification(models.Model):
    user = models.ForeignKey(User)
    createdAt = models.DateTimeField(auto_now_add=True, blank=True)
    read = models.BooleanField(default=False, blank=True)

    class Meta:
        abstract = True

class RegularNotification(Notification):
    message = models.CharField(max_length=150)
    link = models.CharField(max_length=100)

class FNotification(Notification):
    # same as Notification
    pass

私がpython manage.py makemigrations 、これはそれが言うことです:

Migrations for 'CApp':
  0019_auto_20151202_2228.py:
    - Create model RegularNotification
    - Create model FNotification
    - Remove field user from notification
    - Add field f_request to userextended
    - Delete model Notification

まず、 userが私のNotiicationモデルに入っているので、 Remove field user from notificationからRemove field user from notificationというのは奇妙なことです(だから、なぜフィールドユーザーを「通知から削除する」と言ったのか理解できれば、それは素晴らしいことです)。先に進んでpython manage.py migrateを実行しようとpython manage.py migrateと、このメッセージが表示されます。

Applying CMApp.0019_auto_20151202_2228... OK
The following content types are stale and need to be deleted:

    CApp | notification

Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.

    Type 'yes' to continue, or 'no' to cancel: no

noと入力しました。 しかし、これは正確には何を意味するのでしょうか。なぜ私はこのメッセージを受け取っているのでしょうか。