我可以在Django模型中创建一个依赖于另一个的字段吗?

时间:2020-07-24 16:56:24

标签: django django-models model

我创建了一个课程Lesson,我希望管理员可以添加1,2,3或更多文本字段和其他字段。现在,我喜欢这样:

    class Lesson(models.Model):
    title = models.CharField(max_length=50) 
    text1 = models.TextField(default="")
    text2 = models.TextField(default="", blank=True, null=True)
    text3 = models.TextField(default="", blank=True, null=True)
    ...

但是在管理员方面,这不是很好

是否存在定义第一个字段的方法:models.IntegerChoices,例如,管理员选择10个,它会自动生成10个文本字段,因此在数据库中生成10列?

感谢阅读

2 个答案:

答案 0 :(得分:0)

您不能即时生成多个TextField,因为它需要数据库迁移。

在这种情况下,您可以做的是定义一个包含单个CustomModel的{​​{1}},然后在TextField中定义一个ManyToManyField(CustomModel),然后可以添加尽可能多地引用。

Many-to-many relationships

答案 1 :(得分:0)

我认为最简单的解决方案是定义模型,例如:

    #as i don't know your table schema i'll assume that title have an array called videos
    while ($row = $lessonSingleResult->fetch(PDO::FETCH_ASSOC)) {
        $allTitles[] = $row['title']['videos'];
    }
    #iterate all the titles received from query
    foreach($allTitles as $titles){
        #iterates through each key inside of each title
        foreach($titles as $title){
            echo "Title for {$title}".PHP_EOL;
        }
    }

然后在管理员u中可以定义内联:

您的问题类似于: https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

相关问题