在 Django 中从一个应用程序到另一个应用程序的外键

我想知道是否可以在 Django 中的 models.py 文件中定义一个外键,作为对另一个应用程序中表的引用?

换句话说,我有两个应用程序,叫做 cf 和 profile,在 cf/models.py 中我有(和其他东西一起) :

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

以及我想要的配置文件/model. py:

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

但我没法让它工作,我试过了:

    movie = models.ForeignKey(cf.Movie)

我曾经尝试在 models.py 的开头导入 cf Movie,但是总是出现错误,比如:

NameError: name 'User' is not defined

我试图用这种方式将两个应用程序绑定在一起,是否违反了规则,或者只是语法错误?

50370 次浏览

好吧,我想明白了。您可以这样做,只需要使用正确的 import语法。正确的语法是:

from prototype.cf.models import Movie

我的错误是没有指定 .models的那一部分!

根据文件,你的第二次尝试应该会成功:

若要引用另一个应用程序中定义的模型,必须显式指定应用程序标签。例如,如果上面的 Manufacturers 模型是在另一个称为 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)