在Django中创建和管理复杂数据模型的正确技术是什么?

在Django中创建和管理复杂数据模型的正确技术是什么?,django,django-models,Django,Django Models,我有关系数据库背景,懂一点Python,是一个完全的Django新手/爱好者。我一直在考虑在Django做一些项目。然而,我注意到的一件事是,在Django中,您使用代码而不是ER建模工具(如ERwin或Embarcadero)创建数据模型 我的问题是: 是否可以将复杂的数据模型(填充或不填充)导入Django并用ER图将其可视化 谢谢 实际上,Django使用了ORM(对象关系映射),它实际上比看起来更简单。我建议(对于问题2)在ER图中构建它,然后创建与实体关联的代码,例如: (一) 人 -

我有关系数据库背景,懂一点Python,是一个完全的Django新手/爱好者。我一直在考虑在Django做一些项目。然而,我注意到的一件事是,在Django中,您使用代码而不是ER建模工具(如ERwin或Embarcadero)创建数据模型

我的问题是:

是否可以将复杂的数据模型(填充或不填充)导入Django并用ER图将其可视化


谢谢

实际上,Django使用了ORM(对象关系映射),它实际上比看起来更简单。我建议(对于问题2)在ER图中构建它,然后创建与实体关联的代码,例如:

(一) 人 -名称VARCHAR(50), -ID整数主键

(Python代码)

这是一个简单的示例,我建议查看Django文档中的模型,以了解更多内容。此链接可能有助于:


实际上,Django使用了ORM(对象关系映射),它实际上比看起来更简单。我建议(对于问题2)在ER图中构建它,然后创建与实体关联的代码,例如:

(一) 人 -名称VARCHAR(50), -ID整数主键

(Python代码)

这是一个简单的示例,我建议查看Django文档中的模型,以了解更多内容。此链接可能有助于:


Django最有价值的功能之一是它的ORM和一些帮助解开复杂数据模型的
manage.py
命令。如果您还没有探索过,我认为它有您想要的:
manage.py graph\u models
为您提供了一个可定制的模型ER图。我在处理大型数据库时经常使用它。我经常需要导入一个大型数据库模型(从一组现有的数据库中),并使用django内置的
manage.py inspectdb>models.py
生成几乎所有的数据库模型。使用
graph_models
您可以尝试各种布局和各种细节,以帮助您看到“大局”。即使最终目标不是构建Django webapp,我发现这些工具有助于快速理解DB模型,尤其是当您无法访问原始DB创建者时Django最有价值的功能之一是它的ORM和一些帮助解开复杂数据模型的
manage.py
命令。如果您还没有探索过,我认为它有您想要的:
manage.py graph\u models
为您提供了一个可定制的模型ER图。我在处理大型数据库时经常使用它。我经常需要导入一个大型数据库模型(从一组现有的数据库中),并使用django内置的
manage.py inspectdb>models.py
生成几乎所有的数据库模型。使用
graph_models
您可以尝试各种布局和各种细节,以帮助您看到“大局”。即使最终目标不是构建Django webapp,我发现这些工具有助于快速理解DB模型,尤其是当您无法访问原始DB创建者时或者他们的推理。

谢谢您的快速回复。这种方法的缺点不就是文档和物理模型不能自动同步吗?因此,如果您对其中一个进行更改,您不需要手动对另一个进行更改吗?是的,但是可以使用其他属性(基本上是默认值和许多其他属性)。Django是基于MVC模型的,所以这实际上是需要采取的方法。通常,当您对模型进行更改时,必须“迁移”这些更改。因此,它会自动更新(我强烈建议使用默认参数,因为您可能会在以后遇到一些问题,您可能会注意到),感谢您的快速响应。这种方法的缺点不就是文档和物理模型不能自动同步吗?因此,如果您对其中一个进行更改,您不需要手动对另一个进行更改吗?是的,但是可以使用其他属性(基本上是默认值和许多其他属性)。Django是基于MVC模型的,所以这实际上是需要采取的方法。通常,当您对模型进行更改时,必须“迁移”这些更改。所以它会自动更新(我强烈建议使用默认参数,因为您可能会在以后遇到一些问题,您可能会注意到),好吧,django模型确实是数据库的反映。但另一方面,它们也是python类。您应该考虑类实体,而不是数据库级设计。许多内置字段也可以帮助您简化关系,例如使用
ManyToManyField
时,您不需要关心下划线创建的中间关系表。你应该做一个你认为足够复杂的项目,并尝试使用django。这也许能更好地回答您的问题。好吧,django模型确实是数据库的反映。但另一方面,它们也是python类。您应该考虑类实体,而不是数据库级设计。许多内置字段也可以帮助您简化关系,例如使用
ManyToManyField
时,您不需要关心下划线创建的中间关系表。你应该做一个你认为足够复杂的项目,并尝试使用django。这也许能更好地回答你的问题。
class Person:
    Name = models.CharField(max_length = 50, default = 'Neo')
    # Also best part is, you ID is already made