我正在为Wiki应用程序创建django rest api, 现在,我正在考虑创建3个模型:
我不知道该怎么做的问题,因为我希望对于每个类别,我只会看到依赖的类别,而并非所有类别,而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
答案 0 :(得分:0)
我可能会建议您使用其他设计方法。
我不知道您的带有“类别/子类别”的计划是什么,但是到目前为止,它仅包含name
-所以我认为更好的方法是删除“类别/子类别”表并调整“内容”模型的类别/子类别只能是具有选择项的Charfield。
如果您坚持要为类别和子类别使用单独的表:
这取决于您打算如何处理表格-如果您只一次输入类别/子类别-我建议您简化它,而只需删除选择即可。
如果您确实需要基于Linux / Windows主选项进行选择,则需要在计划使用它的地方动态构建选择(因为目前尚不清楚)。