【问题标题】:Can I create a field in django-model depending of an other?我可以根据另一个在 django-model 中创建一个字段吗?
【发布时间】:2020-11-14 14:07:46
【问题描述】:

我创建了一个课程课程,我想让管理员能够添加 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 列?

感谢阅读

【问题讨论】:

    标签: django django-models model


    【解决方案1】:

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

    在这种情况下,您可以做的是定义一个包含单个 TextFieldCustomModel,然后在 Lesson 中定义一个 ManyToManyField(CustomModel),然后您可以根据需要添加任意数量的引用。

    Many-to-many relationships

    【讨论】:

      【解决方案2】:

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

      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

      【讨论】:

        猜你喜欢
        • 2021-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多