Python Java风格文件结构中的Django模型
我正在构建一个大型Django应用程序,希望将数据模型拆分为“每个文件一类”结构,但在尝试这样做时,我遇到了一些更复杂模型的循环依赖性问题 例如,我有三个模型,都在单独的文件中:Python Java风格文件结构中的Django模型,python,django,django-models,Python,Django,Django Models,我正在构建一个大型Django应用程序,希望将数据模型拆分为“每个文件一类”结构,但在尝试这样做时,我遇到了一些更复杂模型的循环依赖性问题 例如,我有三个模型,都在单独的文件中: class Book(models.Model): title = models.CharField(max_length=35) author = models.ForeignKey(Author) genre = models.ForeignKey(Genre) class Genre(m
class Book(models.Model):
title = models.CharField(max_length=35)
author = models.ForeignKey(Author)
genre = models.ForeignKey(Genre)
class Genre(models.Model):
name = models.CharField(max_length=20)
sample_book = models.ForeignKey(Book)
class Author(models.Model):
name = models.CharField(max_length=60)
preferred_genre = models.ForeignKey(Genre)
由于Book依赖于Genre,Genre依赖于Book,所以当我在任意位置导入Book时,它会启动一个循环模型依赖链,因为每个文件都从其他文件导入模型。我怎样才能避免这种情况?这类项目将非常迅速地增长,因此我不想将所有模型都合并到一个文件中。您也可以将模型名称指定为字符串:
preferred_genre = models.ForeignKey("Genre")
我认为这是一个设计问题,而不是django问题 你的体裁不应该参考这本书。否则,无论使用何种语言/框架,都将创建循环引用 示例手册似乎是针对应用程序的一个特性编写的。我建议您创建一个实体来存储您选择的样本书
或者,如果示例书只是所有书籍中的一本随机书籍,您可以在其他地方使用一个函数返回一本书。您的问题与此类似,它也有解决方案。@codecool:谢谢!这完全回答了我的问题!这只是一个例子。不幸的是,实际的代码是保密的,所以我无法分享,但实际的项目要比这复杂得多。虽然您对示例书的具体示例可能是正确的,但这并不是示例的重点。我只是想表达一个类似的问题以供参考。啊哈!非常感谢你。另外,感谢codecool指出了我在搜索中错过的线索。