У меня было две модели CombinedProduct и CombinedProductPrice, которые я переименовал в Set и SetPrice соответственно. Я сделал это, изменив имя модели в файле models.py и заменив все ее вхождения. Это также включало переименование поля foreignkey в другой модели из comb_product в set (указывающее на CombinedProduct).Stale content type prompt удаление всех экземпляров модели после переименования модели django с разрешениями
При запуске makemigrations django правильно обнаружил переименование и спросил, переименовал ли я все три из этих вещей, и я нажал «да» для всех. Однако при запуске «мигрируют», после применения некоторых вещей, меня спрашивают:
The following content types are stale and need to be deleted:
product | combinedproduct
product | combinedproductprice
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'.
Я поддержал мои данные и вошел в «да», которые удалены все экземпляры Set (ранее CombinedProduct) и SetPrice (ранее CombinedProductPrice). Если я откатываюсь назад и тикаю нет, тогда этот вопрос возникает каждый раз, когда я переношу.
Это странно, так как я нигде не использую никакую структуру ContentType django. При проверке, какие поля указывают на ContentType, я вижу, что auth.permission указывает на него, и я использую разрешения для этих моделей. Может быть, удаление каскадов из старых разрешений указывает на старые имена моделей, которые, в свою очередь, удалят мои экземпляры? Если это так, как я могу предотвратить эту ситуацию?
Это миграция, которая была сгенерирована:
operations = [
migrations.RenameModel(
old_name='CombinedProduct',
new_name='Set',
),
migrations.RenameModel(
old_name='CombinedProductPrice',
new_name='SetPrice',
),
migrations.AlterModelOptions(
name='setprice',
options={'ordering': ('set', 'vendor', 'price'), 'verbose_name': 'Set price', 'verbose_name_plural': 'Set prices'},
),
migrations.RenameField(
model_name='setprice',
old_name='combined_product',
new_name='set',
),
]
Django действительно автоматически обнаружил переименованную модель. См. Мое редактирование о миграции, которая была создана. И хотя он использует RenameModel, у меня все еще есть эта проблема. – Tobias