【发布时间】:2021-07-21 10:44:01
【问题描述】:
我是 Django 项目的新手,想知道设计模型的最佳实践是什么。 我正在创建一个小项目,该项目将以类别和子类别的方式收集故事。我将其标记为 Django,因为我还想验证应用程序的范围。
应用程序: 索引,流派
设计:
Index
Genre
|-- Story
|--Section
|-- Chapters
|--Paragraph
|-- title
|-- text
|-- highlights
genre.models.py
class Story(models.Model):
stry = models.CharField(max_length=256,unique=True)
id =models.AutoField(primary_key=True)
def __str__(self):
return self.stry
class Section(models.Model):
stry = models.ForeignKey(Story,on_delete=models.CASCADE)
name = models.CharField(max_length=256)
desc=models.TextField()
id =models.AutoField(primary_key=True)
slug = models.CharField(max_length=240, null=True, blank=False)
created_at = models.DateTimeField(auto_now_add=True, null=False)
updated_at = models.DateTimeField(auto_now=True, null=False)
class Chapter(models.Model):
sec = models.ForeignKey(Section,on_delete=models.CASCADE)
name = models.CharField(max_length=256)
desc=models.TextField()
id =models.AutoField(primary_key=True)
slug = models.CharField(max_length=240, null=True, blank=False)
created_at = models.DateTimeField(auto_now_add=True, null=False)
updated_at = models.DateTimeField(auto_now=True, null=False)
class Paragraph(models.Model):
chap = models.ForeignKey(Chapter,on_delete=models.CASCADE)
title = models.CharField(max_length=120, null=True, blank=False)
subtitle = models.CharField(max_length=180, null=True, blank=False)
slug = models.CharField(max_length=240, null=True, blank=False)
body = models.TextField()
created_at = models.DateTimeField(auto_now_add=True, null=False)
updated_at = models.DateTimeField(auto_now=True, null=False)
体裁可以有很多故事,每个部分可以有很多章节和类似的模式
问题:
-
是否有更好的设计模型可供我研究?
-
可以将它们划分为不同的应用程序,或者为每种类型提供一个应用程序,或者 包括流派作为模型。
【问题讨论】:
-
你的
index-app 会做什么? -
@KlimBim 索引应用程序将用作索引。将所有类型显示为列表并允许搜索选项以查找特定故事。我打算为每种类型制作一个应用程序,并使用 idex 显示所有应用程序列表。我认为这是一个非常糟糕的主意
-
你可以分开。但是,当您想在不同的应用程序中使用您的
templates或其他东西时,您必须注意您的namespace。例如,如果在urls.py中设置了app_name。如果你是 django 的新手,你可以很容易地做到这一点。为每个目的创建不同的path。例如,path(genre/thriller/.......)、path(genre/comedy.....)等并将其保存在一个应用程序中。
标签: python django django-models database-design model