Бесконечная миграция для интактной модели
util
class UploadTo:
def __init__(self, folder, filename_suffix=""):
self.folder = folder
self.filename_suffix = filename_suffix
def _get_filename(self, instance, filename):
_, file_extension = os.path.splitext(filename)
result = str(instance.a_uuid)
if self.filename_suffix:
result += "-{}".format(self.filename_suffix)
result += file_extension
return result
def save_path(self, instance, filename):
tmp_filename = self._get_filename(instance, filename)
result = "{}/{}".format(self.folder.value,
tmp_filename)
return result
модель
class Sound(UuidMixin,
PhraseMixin,
CommentMixin):
british_sound = models.FileField(blank=True,
null=False,
default="",
upload_to=UploadTo(folder=UPLOAD_TO.VOCABULARY_SOUND_FOLDER,
filename_suffix="british").save_path)
american_sound = models.FileField(blank=True,
null=False,
default="",
upload_to=UploadTo(folder=UPLOAD_TO.VOCABULARY_SOUND_FOLDER,
filename_suffix="american").save_path)
Сообщение
Migrations for 'vocabulary_sounds':
vocabulary_sounds/migrations/0009_alter_sound_american_sound_alter_sound_british_sound.py
- Alter field american_sound on sound
- Alter field british_sound on sound
Миграция
class Migration(migrations.Migration):
dependencies = [
('vocabulary_sounds', '0008_alter_sound_american_sound_alter_sound_british_sound'),
]
operations = [
migrations.AlterField(
model_name='sound',
name='american_sound',
field=models.FileField(blank=True, default='', upload_to=general.model_aux.UploadTo.save_path),
),
migrations.AlterField(
model_name='sound',
name='british_sound',
field=models.FileField(blank=True, default='', upload_to=general.model_aux.UploadTo.save_path),
),
]
Copy Snippet
Edit Snippet
Wordwrap
class Sound(UuidMixin,
PhraseMixin,
CommentMixin):
british_sound = models.FileField(blank=True,
null=False,
default="",
upload_to=UploadTo(folder=UPLOAD_TO.VOCABULARY_SOUND_FOLDER,
filename_suffix="british").save_path)
american_sound = models.FileField(blank=True,
null=False,
default="",
upload_to=UploadTo(folder=UPLOAD_TO.VOCABULARY_SOUND_FOLDER,
filename_suffix="american").save_path)
Migrations for 'vocabulary_sounds':
vocabulary_sounds/migrations/0009_alter_sound_american_sound_alter_sound_british_sound.py
- Alter field american_sound on sound
- Alter field british_sound on sound
class Migration(migrations.Migration):
dependencies = [
('vocabulary_sounds', '0008_alter_sound_american_sound_alter_sound_british_sound'),
]
operations = [
migrations.AlterField(
model_name='sound',
name='american_sound',
field=models.FileField(blank=True, default='', upload_to=general.model_aux.UploadTo.save_path),
),
migrations.AlterField(
model_name='sound',
name='british_sound',
field=models.FileField(blank=True, default='', upload_to=general.model_aux.UploadTo.save_path),
),
]
Когда я выполняю makemigrations, этот код генерирует новую миграцию. Буквально:
python manage.py makemigrations
Появляется новая миграция.
Потом сразу:
python manage.py makemigrations
Появляется новая миграция.
Текст миграций всегда одинаков (насколько я могу судить).
Помогите, пожалуйста, понять, почему появляются новые миграции, хотя модель не повреждена? И как решить эту проблему?