如何创建Django模型依赖项?

时间:2018-07-17 06:22:37

标签: django django-models django-rest-framework

我正在为Wiki应用程序创建django rest api, 现在,我正在考虑创建3个模型:

  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

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

类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

1 个答案:

答案 0 :(得分:0)

我可能会建议您使用其他设计方法。

我不知道您的带有“类别/子类别”的计划是什么,但是到目前为止,它仅包含name-所以我认为更好的方法是删除“类别/子类别”表并调整“内容”模型的类别/子类别只能是具有选择项的Charfield。

如果您坚持要为类别和子类别使用单独的表:

这取决于您打算如何处理表格-如果您只一次输入类别/子类别-我建议您简化它,而只需删除选择即可。

如果您确实需要基于Linux / Windows主选项进行选择,则需要在计划使用它的地方动态构建选择(因为目前尚不清楚)。