Внешний ключ из одного приложения в другое в 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'о!

  • Pycharm - модели автозагрузки в консоли Django
  • Изменение размеров полей в Django Admin
  • Модель Django задает внешний ключ для поля другой модели
  • Django исключить из числа аннотаций
  • Django - как продлить сторонние модели без изменения
  • Поле модели Django По умолчанию для Null
  • Наследование модели Django. Скрытие или удаление полей
  • Множественная конфигурация базы данных в Django 1.2
  • Как расширить модель сайта в django?
  • Устранение неполадок общих отношений в django
  • Добавление имени и фамилии в Django-Registration
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.