Zastanawiam się, czy można zdefiniować klucz obcy w pliku models.py w Django, który jest odniesieniem do tabeli w innej aplikacji?
Innymi słowy, mam dwie aplikacje, zwane cf i profiles, aw cf / models.py mam (między innymi):
class Movie(models.Model):
title = models.CharField(max_length=255)
a w profiles / models.py chcę mieć:
class MovieProperty(models.Model):
movie = models.ForeignKey(Movie)
Ale nie mogę zmusić tego do pracy. Próbowałem:
movie = models.ForeignKey(cf.Movie)
i próbowałem zaimportować cf.Movie na początku models.py, ale zawsze otrzymuję błędy, takie jak:
NameError: name 'User' is not defined
Czy łamię zasady, próbując powiązać ze sobą dwie aplikacje w ten sposób, czy po prostu źle zrozumiałem składnię?
Możliwe jest również zaliczenie samych zajęć:
from django.db import models from production import models as production_models class Car(models.Model): manufacturer = models.ForeignKey(production_models.Manufacturer)
źródło
OK - wymyśliłem to. Możesz to zrobić, wystarczy użyć odpowiedniej
import
składni. Prawidłowa składnia to:from prototype.cf.models import Movie
Moim błędem nie było określenie
.models
części tej linii. D'oh!źródło