创建Django模型的新手
我是django的新手,试图了解如何创建我的模型。我正在构建一个应用程序,可用于从模板创建文档。这些文档可以有许多不同的类型,并且包含通用部分以及特定于每种文档类型的部分。我打算让用户可以选择的特定部分(包括在他们的文档中)根据他们选择创建的文档类型进行更改。但是,无论文档类型如何,都将使用泛型部分 我很难弄清楚如何构建模型来实现这一点。我考虑过为文档模型和节模型提供一种可以在html中设置和引用的文档类型,使节与每个文档相匹配:创建Django模型的新手,django,Django,我是django的新手,试图了解如何创建我的模型。我正在构建一个应用程序,可用于从模板创建文档。这些文档可以有许多不同的类型,并且包含通用部分以及特定于每种文档类型的部分。我打算让用户可以选择的特定部分(包括在他们的文档中)根据他们选择创建的文档类型进行更改。但是,无论文档类型如何,都将使用泛型部分 我很难弄清楚如何构建模型来实现这一点。我考虑过为文档模型和节模型提供一种可以在html中设置和引用的文档类型,使节与每个文档相匹配: class Document(models.Model):
class Document(models.Model):
document_type = models.CharField(max_length=50)
class Sections(models.Model):
document_type = models.CharField(max_length=50)
或在文档类型模型中添加:
class Document(models.Model):
document_type = models.ForeignKey(DocumentType)
class Sections(models.Model):
document_type = models.ForeignKey(DocumentType)
class DocumentType(models.Model):
name = models.CharField(max_length=50)
但我担心这会导致问题,因为许多文档共享一些通用部分。因此我想知道我是否将通用部分和特定部分分开:
class GenericSection():
document_type = models.ManyToManyField(DocumentType)
class SpecificSection():
document_type = models.ForeignKey(DocumentType)
甚至可以将每种文档类型分离到自己的应用程序中。我想我已经陷入了困境,如果有任何关于是否有更合适的方法来解决这个问题的反馈,我将不胜感激。如果一个文档只能是一种类型,我个人会将它放在自己的表中。这样,它们就不会到处重复 然后,文档表的文档类型应该是文档类型表的外键(假设一个文档只能有一种类型,或者如果一个文档可以有多种类型,则与文档类型表有多对多关系)
外键是确保表不会变成指向错误值或死值等的噩梦的好方法。谢谢,这很有意义。那么,节表的文档类型是否与文档类型表存在多对多关系,以便每个节可以属于一个或多个文档类型?多对多只需要在一个模型文件中定义,因此如果您希望文档的documentType字段具有多对多,只需在文档模型文件中定义ManyToMany,而不是DocumentType模型文件。(假设您认为一个文档可以有多个文档类型)如果您的文档只能有一种类型,则不要使用外键。在我看来,你的思维过程是正确的,你可以使用外键,也可以使用很多外键。