我可以在django模型中创建一个依赖于其他字段的字段吗



我创建了一个类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,因为它需要数据库迁移。

在这种情况下,您可以定义一个包含单个TextFieldCustomModel,然后在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

最新更新