Внешний ключ из одного приложения в другое в Django

Мне интересно, можно ли определить внешний ключ в файле models.py в Django, который является ссылкой на таблицу в другом приложении?

Другими словами, у меня есть два приложения, называемые cf и профили, и в cf / models.py у меня есть (среди прочего):

class Movie(models.Model): title = models.CharField(max_length=255) 

и в профилях / models.py Я хочу иметь:

 class MovieProperty(models.Model): movie = models.ForeignKey(Movie) 

Но я не могу заставить его работать. Я пробовал:

  movie = models.ForeignKey(cf.Movie) 

и я попытался импортировать cf.Movie в начале models.py, но всегда получаю ошибки, например:

 NameError: name 'User' is not defined 

Я нарушаю правила, пытаясь связать два приложения вместе таким образом, или я просто получил синтаксис неправильно?

3 Solutions collect form web for “Внешний ключ из одного приложения в другое в Django”

Согласно документам, ваша вторая попытка должна работать:

Чтобы ссылаться на модели, определенные в другом приложении, вы должны явно указывать метку приложения. Например, если модель производителя выше определена в другом приложении с названием production, вам нужно будет использовать:

 class Car(models.Model): manufacturer = models.ForeignKey('production.Manufacturer') 

Вы пробовали поместить его в кавычки?

Также можно пройти сам класс:

 from django.db import models from production import models as production_models class Car(models.Model): manufacturer = models.ForeignKey(production_models.Manufacturer) 

Хорошо. Я понял это. Вы можете это сделать, вам просто нужно использовать правильный синтаксис import . Правильный синтаксис:

 from prototype.cf.models import Movie 

Моя ошибка не .models часть .models этой линии. D'о!

  • Как ограничить выбор внешних ключей связанными объектами только в django
  • makemigrations не обнаруживает изменения для расширенных моделей в Django 1.7
  • Использование API RESTful в Django
  • Добавление пользовательской проверки модели Django
  • Как use_for_related_fields работает в Django?
  • post_save в django для немедленного обновления экземпляра
  • Как создать целочисленное поле auto increment Django
  • Satchmo clonesatchmo.py ImportError: невозможно импортировать имя execute_manager
  • Python - лучший язык программирования в мире.