Я создаю приложение, используя django, и использую django-south для миграций схемы базы данных. Я использую django-mptt для построения системы комментариев, и я установил 0.5-pre (текущая ветка git master).
Используемая версия имеет поле django с именем TreeForeignKey
, но я пытаюсь проверить, есть ли в 0.5 ошибка, существующая в 0.4, поэтому я удалил свою версию django-mptt и установил Текущий выпуск от Cheeseshop. Я изменил свой код, чтобы использовать ForeignKey
вместо TreeForeignKey
.
Когда приходит время выполнить миграцию, оно явно разрывается с этим сообщением:
ValueError: Cannot import the required field 'mptt.fields.TreeForeignKey'
Все мои файлы миграции ссылаются на mptt.fields.TreeForeignKey
, которого нет в django-mptt 0.4.
Моя Comment
модель в django-mptt 0.5:
from mptt.models import MPTTModel
from mptt.fields import TreeForeignKey
class Comment(MPTTModel):
# ...
parent = TreeForeignKey('self', related_name='children', blank=True, null=True)
Та же модель после того, как я опустился до django-mptt 0.4
import django.db.models
from mptt.models import MPTTModel
class Comment(MPTTModel):
# ... cruft
# TreeForeignKey does not exist in mptt 0.5!
parent = models.ForeignKey('self', related_name='children', blank=True, null=True)
Я предложил два довольно хакерских подхода, чтобы исправить это и разрешить миграцию работать:
- Добавьте класс
TreeForeignKey
в мою установку django-mptt.
- Измените мои файлы миграции, чтобы удалить ссылки на
mptt.fields.TreeForeignKey
.
Я выбрал первый подход, и он сработал, но я чувствую, что это что-то вроде взлома (но не настолько, как второй вариант).
Есть ли нехакерский способ сделать то, что я сделал, с понижением зависимостей, которое привело к изменению некоторых полей в моих моделях?