我创建了一个课程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列?
感谢阅读
答案 0 :(得分:0)
您不能即时生成多个TextField,因为它需要数据库迁移。
在这种情况下,您可以做的是定义一个包含单个CustomModel
的{{1}},然后在TextField
中定义一个ManyToManyField(CustomModel)
,然后可以添加尽可能多地引用。
答案 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