Django/Python 循环模型参考

2023-12-28

好的,所以我正在尝试编写组织良好的代码,并实际制作单独的 django 应用程序,而不是将所有内容集中到 1 个应用程序中。我的问题是我有 3 个应用程序,每个应用程序都引用下一个应用程序中的 1 个其他模型。所以基本上我有一个无限循环,应用程序 A 需要了解 B.models.something1 ,应用程序 B 需要了解 C.models.Somthing2 ,应用程序 C 需要了解 A.models.something3 。这当然不会运行,对于那些想知道这是否确实是一个问题的人来说:)。是否有类似类的预声明的东西,以便 python 知道这些类实际上存在?

Thanks.

编辑:更多代码: 不幸的是,我的项目的性质和模型是保密的,因此我必须更改名称以反映完全不同的内容,但代码将保持不变。

老师/models.py

 from django.db import models
 from myapp.student.models import *
 from django.contrib.auth.models import User
 class Teacher(models.Model):
     """(description)"""
     user = models.ForeignKey(User)
     name = models.CharField(max_length=100)
     phone = models.CharField(max_length=13)
     phone_ext = models.CharField(blank=True, max_length=5)
     fax = models.CharField(blank=True, max_length=13)
     fax_ext = models.CharField(blank=True, max_length=100)
     url = models.URLField(blank=True, verify_exists=True)
     complaint = models.ManyToManyField(Complaint)
     city = models.CharField(blank=True, max_length=100)
     state = models.CharField(blank=True, max_length=100)
     postal_code = models.CharField(blank=True, max_length=15)
     location = models.ManyToManyField(Location)
     def __unicode__(self):
         return self.name
 class Location(models.Model):
     """(description)"""
     city = models.CharField(blank=True, max_length=100)
     state = models.CharField(blank=True, max_length=100)
     country = models.CharField(blank=False, max_length=100)
     def __unicode__(self):
         return self.city + ", " + self.state +", "+self.country

学生/models.py

 from django.db import models
 from django.contrib.auth.models import User
 from myapp.school.models import School

 class Student(models.Model):
     """(Student description)"""
     user = models.ForeignKey(User)
     country = models.CharField(max_length=100)
     state = models.CharField(max_length=100)
     city = models.CharField(max_length=100)
     locale = models.CharField(blank=False, max_length=5)
     learningtype = models.CharField(blank=True, max_length=100)
     sites = models.TextField(blank=True)
     def __unicode__(self):
         return str(self.user)

 class Complaint(models.Model):
     """(Complaint description)"""
     student = models.ForeignKey(Student)
     site = models.ForeignKey(School)
     complaint = models.TextField(blank=False)
     def __unicode__(self):
         return str(self.site)

学校/models.py

 from django.db import models
 from myapp.teacher.models import Location
 class School(models.Model):
     """(School description)"""
     name = models.CharField(max_length=100)
     url = models.URLField(verify_exists=True)
     img = models.ImageField(upload_to="casion_img/")
     rating = models.FloatField()
     description = models.CharField(blank=True, max_length=300)
     goodstanding = models.BooleanField(default=True)
     location = models.ForeignKey(Location)
     def __unicode__(self):
         return self.name

这就是我得到的:

文件“/Users/userzero/django/myapp/school/models.py”,第 2 行,位于 从teacher.models导入位置 文件“/Users/userzero/django/myapp/teacher/models.py”,第 2 行,位于 from Student.models 导入 投诉 文件“/Users/userzero/django/myapp/student/models.py”,第 3 行,位于 从 school.models 导入 School 文件“/Users/userzero/django/myapp/casino/models.py”,第 2 行,位于 从teacher.models导入位置 导入错误:无法导入名称位置


来自docs http://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey:

引用另一个中定义的模型 应用程序,您可以明确 指定一个完整的模型 应用程序标签。例如,如果 上面的制造商型号定义在 另一个称为生产的应用程序, 你需要使用:

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

这种参考可能很有用 解决循环导入时 两个应用程序之间的依赖关系。

因此,对于您的应用程序,请尝试更改例如

 location = models.ForeignKey(Location) 

to

 location = models.ForeignKey('Location')

请注意,如果此模型位于不同的应用程序中,那么您也需要指定(感谢@Bran 指出这一点),例如

 location = models.ForeignKey('teacher.Location')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django/Python 循环模型参考 的相关文章

  • Python2 math.fsum 不准确?

    我正在使用 python2 数学模块来计算 fsum 的总和 据我所知 0 1通常不能存储二进制 据我了解 math fsum 应该以某种方式解决这个问题 import math math fsum 0 0 0 1 0 1 math fsu
  • 如何显示 pymongo.errors.OperationFailure 详细信息?

    写入 MongoDB 时 我在 python 中遇到 pymongo OperationsFailure 除了回溯之外 还有没有办法打印出详细信息或代码属性 另请参阅 http api mongodb org python current
  • Python Turtle 中的 onkeypress() 和 Listen() 问题

    我的一个功能有问题 我使用 Python 3 7 当我尝试使用onkeypress 函数 什么也没有发生 我尝试检查它 但是当我按键时乌龟模块没有反应 我尝试使用 w 键向上移动桨 但这不起作用 以下是我的 py 文件 main py im
  • 为什么这个“[::-1]”在Python中返回一个反向列表? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 切片表示法的良好入门指南 https stackoverflow com questions 509211 good primer for python slice notation P
  • SQLAlchemy如何为同一个表定义两个模型

    我有一个表 其中一列是具有两个值的 varchar groupA groupB 当我创建模型时 我想实现两件事 A 组模型 包含 X 数量的相关函数 B 组模型 包含 Y 数量的相关函数 两个模型的功能并不相同 尽管它们代表了same ta
  • 如何针对 Heroku 路由器的代理/缓冲情况优化 uWSGI?

    我在 Heroku 的生产中使用 uWSGI 已有一年多了 它似乎比 Gunicorn 处理所有事情都要好得多 随着我们的流量扩大 我试图更好地理解heroku的路由器和uWSGI之间的接口 以优化和防止问题 但它对我来说仍然相当不透明 我
  • 对训练和测试数据帧使用相同的标签编码器

    我有 2 个不同的 csv 其中包含训练数据和测试数据 我从这些 train features df 和 test features df 创建了两个不同的数据帧 请注意 测试和训练数据有多个分类列 因此我需要对它们应用 labelEnco
  • 视频的 EXIF 之类的东西

    有没有从视频文件中获取信息的标准方法 对于图像 我们有 EXIF 数据 可用于获取有关图像文件的日期 时间 大小等信息 我想知道视频是否也有这样的东西 用例是 我有很多用数码相机拍摄的视频 我想将它们重命名为更有意义的名称 例如 YYYY
  • 从 FTP 服务器上的 ZIP 存档读取文件,无需下载到本地系统

    我在 FTP 服务器上的目标文件是 ZIP 文件 CSV 位于更远的两个文件夹中 我如何才能使用 BytesIO 让 pandas 读取 csv 而无需下载它 这是我到目前为止所拥有的 ftp FTP FTP SERVER ftp logi
  • 如何在 django admin 中更新 jquery 版本

    如何在 Django 管理中更新 jquery 版本 无需在 django contrib admin media js admin jquery min js 中替换它 到最新的 jquery min js 另外 我不想在我的管理员中使用
  • 在 SQLAlchemy 中删除父级后删除子级

    我的问题如下 我有两个型号Entry and Tag通过 SQLAlchemy 中的多对多关系链接 现在我想删除所有Tag没有任何对应的Entry后Entry被删除 示例来说明我想要的内容 Entry 1带标签python java Ent
  • Pygame - 两个圆圈的碰撞检测

    我正在制作一个碰撞检测程序 其中我的光标是一个半径为 20 的圆 当它碰到另一个圆时应该将值更改为 TRUE 出于测试目的 我在屏幕中心有一个半径为 50 的固定圆 我可以测试光标圆是否击中固定圆 但它不能正常工作 因为它实际上是在测试它是
  • python中matlab find函数的替换

    我正在尝试寻找合适的python函数来替代matlabfind在我的脚本和一些谷歌搜索中我看到np where 大多数时候都能解决目的 但在双重条件的情况下 我有不同的输出 有人可以告诉我这种方法有什么问题以及如何继续吗 示例代码和差异如下
  • 如何在Python中生成0-1矩阵的所有可能组合?

    如何生成大小为 K N 的 0 1 矩阵的所有可能组合 例如 如果我取 K 2 和 N 2 我会得到以下组合 combination 1 0 0 0 0 combination 2 1 0 0 0 combination 3 0 1 0 0
  • 由 asyncio.new_event_loop 创建的事件循环挂起

    以下代码只是挂起而不打印任何内容 import asyncio async def foo loop print foo loop stop loop asyncio new event loop asyncio ensure future
  • 无法通过蓝牙读取心率服务

    我希望创建一个简单的 python 脚本 通过蓝牙从 Polar 传感器读取心率数据 我已经阅读了很多其他帖子 但找不到我能够成功执行的简单内容 我有 Polar 可穿戴设备的设备 MAC 地址 我知道我想要读取的值的服务 UUID HR
  • Python 中 Javascript 的 reduce()、map() 和 filter() 的等价物是什么?

    Python 的等价物是什么 Javascript function wordParts currentPart lastPart return currentPart lastPart word Che mis try console l
  • 在 AWS ec2 实例上使用“sudo pip”时出现错误

    我正在尝试在 aws ec2 实例上运行一个小型 python 代码 需要 pytz 和其他一些包 当我尝试安装 pytz 时 出现一些错误 ec2 user ip 172 31 28 178 pip install pytz Collec
  • 如何在(最好是纯)Python 中解码 QR 码图像?

    TL DR 我需要一种使用 最好是纯 Python 从图像文件中解码 QR 码的方法 我有一个带有 QR 码的 jpg 文件 我想使用 Python 对其进行解码 我发现有几个库声称可以做到这一点 PyQRCode 网站在这里 http p
  • python chaco轴标签时间格式

    在 Enthought 的 Chaco 中 TimeFormatter类用于格式化刻度的时间字符串 标签 有没有办法指定时间格式 类似于time strftime 源代码现在将显示月份和日期时的格式硬编码为美国风格 MMDD 我想添加一些灵

随机推荐

  • 如何将弹出框放置在文本的突出显示部分上?

    假设有文本正文的场景 而且 在突出显示其中的单词时 我希望显示一个弹出窗口 其中工具提示位于突出显示的单词处 Kind of like how mac shows definitions of words like below 这是一个 A
  • Pandas:将多行数据添加到单行的额外列中

    我有一个像这样的熊猫数据框 id value 1 25 2 40 3 30 理想情况下我想将其转换为 id value value 2 value 3 1 25 40 30 2 40 25 30 3 30 25 40 上述对话背后的逻辑是添
  • Python - 确定 3 个范围的重叠

    我有一个问题 关于如何在不使用任何现有库的情况下确定 Python 中三个范围的重叠 例如 如果我有三个范围 10 20 15 25 18 30 我应该如何找到它们之间的重叠 我的答案应该是 18 19 20 任何帮助将非常感激 谢谢 重叠
  • Paypal 快速结账错误 订单总额缺失。错误10400

    我有问题 我正在尝试将多个商品发送到 Paypal 但它显示 订单总数丢失 10400 错误 版本 76 0我正在贝宝沙箱上测试我的请求 AMT 106 72 RETURNURL http 3A 2F mydomainname com 2F
  • 两个不同区域内的实验数据拟合

    我正在拟合一组实验数据 sample https docs google com spreadsheets d 1JOw7bDwWWXSkR uU2aELrxx33bdqfR1nVci w1VFUOw edit usp sharing 在两
  • 比较Python中的大量字典列表

    我从来没有想过我会遇到 python 的速度问题 但我确实遇到了 我正在尝试根据字典值来比较非常大的字典列表 我比较两个列表 第一个列表如下 biglist1 transaction somevalue id somevalue date
  • 如何使用 ObservableCollection 源实现 XAML 单选按钮控件?

    我有以下内容ComboBoxXAML 中的元素
  • 使用 Readiness Probe 和 RollBack 策略的 Kubernetes 0 停机时间不起作用

    我已经在 Kubernetes 上设置了一个 Node 应用程序 我正在运行单个副本 并且希望在更新映像时停机时间为 0 我使用更新我的 Podset Image在 Kubernetes 上 set image deployment dev
  • Payola 问题:nil:NilClass 的未定义方法“amount”

    我刚刚学习如何使用 Payola 为我的 RoR 5 1 5 测试应用程序创建订阅 我正在按照 wiki 上的说明进行操作 我已经设置了从 Wiki 上的示例中获取的示例表单 并将其直接放入 app views subscriptions
  • 从 RStudio 访问命令行 (cmd)

    在我在 R 下的工作中 我需要调用另一个软件 ANSYS 为此 我正在 R 下寻找一个允许访问命令行窗口 cmd 的命令 例如 在 matlab 下 字符 允许执行此操作 谢谢 您可以使用system system2 or shell在 W
  • IBOutlet 声明?

    我已经看到下面的代码以 3 种不同的方式编写 关于 IBOutlet 这有关系吗 我想说将 IBOutlet 添加到声明和 property 中会更简洁 只是财产 class SwitchViewController interface i
  • 关于对象比较

    我有一个 java 类 Rec 我有两个实例 Rec1 和 Rec2 我想检查 Rec1 和 Rec2 的值是否相等 如果我这样做 Rec1 equals Rec2 是正确的做法吗 class Rec private BigDecimal
  • 如何从 URL 参数获取 unicode 字符?

    我需要使用 GET 请求通过 JavaScript 客户端将 JSON 发送到我的服务器 因此我开始回显响应以确保翻译过程中不会丢失任何内容 普通文本似乎没有问题 但是一旦我包含任何类型的 Unicode 字符 例如 该字符就会以某种方式编
  • JavaScript:回调函数参数与其他变量同名?

    var str internet performAction function str console log str 私有变量有问题吗str并且还有一个带有同名参数的回调函数 Thanks 这只是一个标准范围的情况 它是作为参数传递给另一
  • Android 机器未联网

    当我的应用程序连接到 WiFi 网络时 我在运行网络服务时遇到问题 我收到以下异常 java net SocketException socket failed ENONET Machine is not on the network 在下
  • 是否可以在不使用图像映射软件的情况下获得图像映射的坐标?

    我正在学习 html css 令我困惑的一件事是图像映射的想法 我该如何获取图像一部分的坐标并将其插入我的区域标签而不使用像 gimp 这样的图像映射软件 使用 gimp 的图像映射工具确实很有用 但我担心将来我需要知道如何在没有 gimp
  • 在 python 中从密码生成 RSA 密钥

    我希望能够生成并再生相同的 RSA 密钥password 和盐 单独在python 目前我正在使用 pycrypto 进行此操作 但是 它似乎并不能单独从密码生成相同的密钥 原因似乎是当 pycrypto 生成 RSA 密钥时 它在内部使用
  • 带有结构和空元胞数组的 MATLAB“bug”(或非常奇怪的行为)

    我不知道这里发生了什么事 我用的是R2006b 在我提交错误报告之前 拥有较新版本的人是否有机会测试一下他们是否获得相同的行为 code bug1 m function bug1 S struct nothing something add
  • JavaScript 正则表达式替换字符序列

    我想在这种特定情况下用下划线替换字符串开头和结尾的所有空格 var a console log myReplace a prints 即 第一个 之前的字符串开头的所有空格以及最后一个 之后的所有空格 其他所有内容 包括字符串中间的空格 保
  • Django/Python 循环模型参考

    好的 所以我正在尝试编写组织良好的代码 并实际制作单独的 django 应用程序 而不是将所有内容集中到 1 个应用程序中 我的问题是我有 3 个应用程序 每个应用程序都引用下一个应用程序中的 1 个其他模型 所以基本上我有一个无限循环 应