2015-07-27 2 views
0

В моем проекте django я использую приложение django-registration многоразового использования. Я устанавливаю это приложение и запускаю syncdb. Это создает для меня таблицу 'registration_registrationprofiles' в моей базе данных. Затем я создаю новое приложение и написать этот код в моем models.py:Модель внешнего ключа Django из существующего стола

class Comments(models.Model): 
    text = models.TextField() 
    pub_date = models.DateTimeField(auto_now=True) 
    user = models.ForeignKey('registration_registrationprofiles') 

И запустить manage.py makemigrations и бросить меня исключение:

ERRORS: 
comments.Comments.user: (fields.E300) Field defines a relation 
with model 'registration_registrationprofiles', which is either 
not installed, or is abstract. 

Как я могу исправить эту проблему?

+0

У миграции есть 'зависимости ', установленные при последней миграции приложения регистрации django? – Blackeagle52

+0

'ForeignKey' принимает либо модель, либо название модели, либо путь. –

ответ

3

Попробуйте это:

from registration.models import RegistrationProfile 

, а затем:

user = models.ForeignKey(RegistrationProfile) 
0

Миграции могут иметь зависимости объявлены. Как правило, makemigrations хорошо справляется с этим, но похоже, что на этот раз он пропустил его. Я предлагаю вам найти файл миграции, который он создал (в your_app/migrations) и проверить его dependencies. Он должен выглядеть следующим образом:

class Migration(migrations.Migration): 
    dependencies = [("registration", "0042_some_migration")] 

    # operations... 

Ключ здесь в dependencies массив должен ссылаться на регистрацию приложения и последнюю миграцию (или, по крайней мере, последняя зависит от вас).

Затем manage.py makemigrations будет определять зависимость и выполнять миграцию в правильном порядке.

Смежные вопросы