【问题标题】:How to create django model dependencies?如何创建 django 模型依赖项?
【发布时间】:2018-12-24 17:58:22
【问题描述】:

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

  1. MainCategory -> Linux 或 Windows
  2. 每个操作系统的子类别以及类别列表
  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

类内容(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

【问题讨论】:

  • 这真的很难阅读和理解。请用你的模型写得更清楚
  • @seuling 已编辑 ..

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


【解决方案1】:

我可能会建议你不同的设计方法。

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

如果您坚持为类别和子类别设置单独的表格:

这取决于您打算如何处理表格 - 如果您只输入一次类别/子类别并且自己输入一次 - 我建议您简化它并简单地删除选项。

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

【讨论】:

    猜你喜欢
    • 2015-02-18
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2018-01-31
    相关资源
    最近更新 更多