Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Java风格文件结构中的Django模型_Python_Django_Django Models - Fatal编程技术网

Python Java风格文件结构中的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

我正在构建一个大型Django应用程序,希望将数据模型拆分为“每个文件一类”结构,但在尝试这样做时,我遇到了一些更复杂模型的循环依赖性问题

例如,我有三个模型,都在单独的文件中:

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指出了我在搜索中错过的线索。