web-dev-qa-db-ja.com

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

これは私の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と表示されるのは奇妙です(したがって、フィールドユーザーを通知から削除すると表示される理由を誰かが理解できる場合'、それは素晴らしいことです!)しかし、それでも、次に進んで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と入力しました。しかし、これは正確にはどういう意味ですか、なぜこのメッセージを受け取るのですか、そしてこのメ​​ッセージを必要としないようにするにはどうすればよいですか?

14
user2719875

表示されるメッセージは、モデルを削除/削除して移行を行うとトリガーされます。

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

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

[〜#〜]編集[〜#〜]

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

11
Rod Xavier