Я удалил ForeignKey из модели и думаю, что миграция не была применена должным образом. Это было три дня назад, и с тех пор были применены другие миграции.

Проблема в том, что теперь я не могу воссоздать тот же ForeignKey, потому что Django не видит изменения в models.py, когда я воссоздаю поле.

Каков наилучший способ решить эту проблему?

class Account(TimestampedModel):
    name = models.CharField(max_length=50, null=True)


# python manage.py makemigrations
No changes detected

Когда я воссоздаю поле, оно продолжает говорить, что никаких изменений не обнаружено.

class Account(TimestampedModel):
    name = models.CharField(max_length=50, null=True)
    exchange = models.ForeignKey(Exchange, on_delete=models.CASCADE, related_name='account', null=True)  # ForeignKey I cant recreate


# python manage.py makemigrations
No changes detected

Я пытался указать имя приложения при вызове makemigrations, но это не помогает.

0
Florent 19 Ноя 2022 в 15:06
Как именно вы делаете выводы о том, что «думает» Джанго? Что вы делаете и каков (неожиданный) результат?
 – 
deceze
19 Ноя 2022 в 15:09
Привет, я добавил пример, чтобы прояснить проблему.
 – 
Florent
19 Ноя 2022 в 15:12
Попробуйте прокомментировать модель и снова запустить миграцию, а затем раскомментировать ее и снова запустить миграцию. Надеюсь, это сработает!
 – 
mdhv_kothari
19 Ноя 2022 в 15:14
Не могли бы вы показать нам текущие миграции (т. е. файлы миграции) для этой модели?
 – 
9769953
19 Ноя 2022 в 15:22
К сожалению, сложно опубликовать содержимое нескольких файлов; Что я сделал, так это удалил все файлы миграции, снова вызвал makemigrations, а затем migrate --FAKED.
 – 
Florent
19 Ноя 2022 в 15:39

2 ответа

Наконец-то я нашел ответ на свой вопрос. Проблема была вызвана методом с тем же именем, что и поле, которое я хотел воссоздать, и с @property. Мне пришлось удалить это свойство, чтобы выполнить миграцию.

0
Florent 19 Ноя 2022 в 16:11

Вы можете попробовать удалить все файлы миграции и удалить базу данных (например, файл sqlite). После этого запустите чистый sqlmigrations+migrate. Убедитесь, что в каждой папке миграции есть файл __init__.py.

0
Timo 19 Ноя 2022 в 16:13