如何创建django模型依赖项



我正在为wiki应用程序创建一个django-rest api,目前,我正在考虑创建三个模型:

  1. MainCategory->Linux或Windows
  2. 每个操作系统的SubCategory,带有类别列表
  3. 每个子类别的WikiContent

我的问题是,我不知道如何以正确的方式进行操作,因为我希望对于每个类别,我只看到依赖的类别,而不是所有类别,WikiContent将看到的内容取决于用户选择的类别。谢谢你的帮助。

class Category(models.Model):
TYPE_CHOICES = (
('Linux', 'Linux'),
('Windows', 'Windows')
)
name = models.CharField(
max_length=10,
choices=TYPE_CHOICES,
default='Linux',
)
def __str__(self):
return self.name
class SubCategoryLinux(models.Model):

# TYPE_CHOICES_LINUX = (
#     ('Installs', 'Installs'),
#     ('Sysaid', 'Sysaid'),
#     ('DataBase', 'DataBase'),
#     ('Docker', 'Docker'),
#     ('Devops', 'Devops'),
#     ('Linux Hardware', 'Linux Hardware'),
#     ('Programming', 'Programming'),
#     ('Monitoring', 'Monitoring')
# )
# TYPE_CHOICES_WIN = (
#     ('Installs','Installs'),
#     ('Sysaid', 'Sysaid')
# )

name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='category')
def __str__(self):
return self.name

class Content(models.Model):
title = models.CharField(max_length=255, unique=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='category')
sub_category = models.ForeignKey(SubCategory, on_delete=models.CASCADE, related_name='sub_category')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(null=True)
content = models.TextField(max_length=40000)
def __str__(self):
return self.title

我可能会建议您采用不同的设计方法。

我不知道你对Category/Subcategory的计划是什么,但现在,它只包含name,所以我认为更好的方法是删除Category/Subcategory表,并将内容模型的Category/Subcategory调整为只有Charfield可以选择。

如果您坚持为类别和子类别分别提供表格:

这取决于你计划对表格做什么——如果你只自己输入一次类别/子类别——我建议简化它,只需删除选项。

如果你真的需要根据主Linux/Windows选项进行选择,你需要在计划使用它的地方动态构建选择(因为目前还不清楚(。

最新更新