我创建了一个类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)
...
但在管理方面,并不是很好
是否存在定义第一个字段的方法:模型。IntegerChoices,例如,管理员选择10,它会自动生成10个文本字段,从而在数据库中生成10列?
感谢阅读
不能动态生成多个TextFields,因为它需要数据库迁移。
在这种情况下,您可以定义一个包含单个TextField
的CustomModel
,然后在Lesson
中定义一个ManyToManyField(CustomModel)
,然后根据需要添加任意多的引用。
多对多关系
我认为最简单的解决方案是定义如下模型:
class Lesson(models.Model):
title = models.CharField(max_length=50)
class Text(models.Model):
text = models.TextField()
lesson= models.ForeignKey(Lesson, on_delete=models.CASCADE)
然后在管理中,你可以定义内联:
您的问题类似于:https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin