【问题标题】:Django admin with multiple heritage具有多种遗产的 Django 管理员
【发布时间】:2018-02-09 00:27:51
【问题描述】:

我有以下课程

class master(models.Model):
    topic = models.ManyToManyField('Topic')

class child1(master):
    question = models.CharField(max_length=100, null=False)

class child2(master):
    answer_display = models.CharField(max_length=300, null=False)

在 django admin 中,我希望添加一个对象 child1,同时添加一个对象 child2,它们具有父模型给出的相同 ID。

我应该怎么做?

编辑: 如果我创建一个对象 child1 和一个对象 child2,我没有我希望的相同主 ID

【问题讨论】:

    标签: django admin models multiple-inheritance


    【解决方案1】:

    我对你想要什么有点困惑,但如果你想将 2 个“孩子”链接到一个“父母”,你可以在两个孩子上创建一个 ForeignKey 字段并使用它来链接到“父”模型。

    此外,如果您希望您的 child1 和 child2 模型从 master 模型继承,它必须在其 class Meta 中包含 abstract = True

    class master(models.Model):
        topic = models.ManyToManyField('Topic')
    
        class Meta:
            abstract = True
    
    class child1(master):
        question = models.CharField(max_length=100, null=False)
    

    【讨论】:

    • 我不想改变我当前的模型,它可以工作。但我希望使用 django 管理员添加内容,我不明白我应该如何编写我的 admin.py 因为我希望同时向两个孩子添加内容
    【解决方案2】:

    这不是组织模型的好方法

    我把它改成类似的东西

    class master(models.Model):
        topic = models.ManyToManyField('Topic')
    
    class child1(child2):
        question = models.CharField(max_length=100, null=False)
    
    class child2(master):
        answer_display = models.CharField(max_length=300, null=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 2021-02-04
      • 2011-12-24
      • 2013-05-29
      • 2015-12-17
      相关资源
      最近更新 更多