当前位置:  开发笔记 > 编程语言 > 正文

Django中从一个app到另一个app的外键

如何解决《Django中从一个app到另一个app的外键》经验,为你挑选了3个好方法。

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

换句话说,我有两个应用程序,称为cf和profiles,在cf/models.py中我有(除其他外):

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

在profiles/models.py中我希望:

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

但我无法让它发挥作用.我试过了:

    movie = models.ForeignKey(cf.Movie)

我尝试在models.py的开头导入cf.Movie,但我总是遇到错误,例如:

NameError: name 'User' is not defined

我是否通过尝试以这种方式将两个应用程序绑定在一起来打破规则,或者我的语法错误?



1> Michael Wark..:

根据文档,你的第二次尝试应该工作:

要引用另一个应用程序中定义的模型,您必须明确指定应用程序标签.例如,如果上面的制造商模型在另一个名为production的应用程序中定义,则需要使用:

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

你试过把它放到引号中吗?


真棒...救生员

2> andorov..:

也可以通过类本身:

from django.db import models
from production import models as production_models

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



3> Ben..:

好的 - 我已经弄清楚了.你可以这样做,你只需要使用正确的import语法.正确的语法是:

from prototype.cf.models import Movie

我的错误并没有指明.models那条线的一部分.D'哦!


有时您必须使用引号而不是导入,因为您可能会互相导入文件.
推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有