在Django中,中间模型是否需要与目标模型属于同一个文件



在运行迁移时,只要我定义了ManyToManyField的模型与我的目标模型位于单独的文件中,我当前就会得到这个惰性引用ValueError。然而,当我将两个模型放在同一个文件中时,我能够成功地运行镜像。

  1. 为什么会发生此错误
  2. 是否可以将模型(community.py和community_member.py(分离为单独的文件

ValueError:包含懒惰地引用fitness.communitymember,但应用程序"健身"没有提供"社区成员"模型。

我的目录结构如下:

my_app
|----fitness
|----user.py
|----community.py
|----community_member.py

社区.py

class Community(models.Model):
id = models.AutoField(
primary_key=True,
)
owner = models.ForeignKey(
User,
)
members = models.ManyToManyField(
User,
through='CommunityMember',
through_fields=('community', 'member')
)
class Meta:
db_table = 'Communities'

社区成员.py

class CommunityMember(models.Model):
community = models.ForeignKey(
Community,
db_column='community_id'
)
member = models.ForeignKey(
User,
db_column='member_id',
)
class Meta:
db_table = 'Community_Members'

设置.py

INSTALLED_APPS = [
'my_app.fitness'
]           

如果我将community_members.py的内容放在community.py内部,迁移将成功执行,但我不确定原因。

Rashed,我真的不知道你为什么需要拆分你的模型,但如果你坚持这么做,肯定有原因。默认Django的应用程序必须包含一个models.py文件。ValueError来自于Django无法找到所有模型定义的事实,它只是不知道在哪里可以找到这些模型。如果你坚持这样做(我个人不建议只有两种型号(,你应该按照文档摘要的建议:https://docs.djangoproject.com/en/1.11/topics/db/models/#organizing-一揽子模型

相关内容

最新更新