これは私の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
と入力しました。しかし、これは正確にはどういう意味ですか、なぜこのメッセージを受け取るのですか、そしてこのメッセージを必要としないようにするにはどうすればよいですか?
表示されるメッセージは、モデルを削除/削除して移行を行うとトリガーされます。
ほとんどの場合、安全に削除できます。ただし、場合によっては、これによりデータが失われる可能性があります。他のモデルが削除されたモデルへの外部キーを持っている場合、これらのオブジェクトも削除されます。
これがDjango古いコンテンツタイプの削除をより安全にすることを要求するチケットです。
[〜#〜]編集[〜#〜]
@ x-yuriが指摘したように、このチケットは修正され、 Django 1.11 でリリースされました。