在运行迁移时,每当我定义了ManyToManyField的模型与我要定位的模型位于单独的文件中时,我当前都会收到此懒惰参考ValueError 。但是,当我将两个模型放在同一个文件中时,便能够成功运行迁移。
ValueError:包含一个 懒惰引用fitness.communitymember,但应用程序“ fitness”没有 提供模型“社区成员”。
我的目录结构如下:
my_app
|----fitness
|----user.py
|----community.py
|----community_member.py
community.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'
community_member.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'
settings.py
INSTALLED_APPS = [
'my_app.fitness'
]
如果将 community_members.py 的内容放置在 community.py 内,迁移将成功执行,但是我不确定为什么。
答案 0 :(得分:1)
匆匆忙忙,我真的不知道为什么需要拆分模型,但是如果您坚持要这样做,则一定有原因。默认的Django应用必须包含models.py
文件。 ValueError
来自Django无法找到您所有模型定义的事实,因为它很简单,不知道在哪里寻找这些模型。如果您坚持这样做(我个人不建议仅使用两个模型),则应该执行文档建议的操作:https://docs.djangoproject.com/en/1.11/topics/db/models/#organizing-models-in-a-package