代码之家  ›  专栏  ›  技术社区  ›  NeoVe

从父对象自动创建子对象-Django 1.11

  •  0
  • NeoVe  · 技术社区  · 5 年前

    我有一个父类:

    class Parent(models.Model):
         field1 = model.CharField()
         field2 = model.CharField()
    

    class Child1(Parent):
        pass
    

    是否有可能在保存perent时创建子对象?

    子对象从父对象继承所有字段,但是,无论是否填充,每当保存父对象时,我都需要创建一个新的子对象。

    2 回复  |  直到 5 年前
        1
  •  2
  •   Ozgur Akcali    5 年前

    拯救 方法 父母亲 模型来做这件事。

    @receiver(models.signals.post_save, sender=Parent)
    def post_parent_save(sender, instance, created, *args, **kwargs):
        # Create child here
    

    class Parent(models.Model):
        def save(self, *args, **kwargs):
            super(Parent, self).save(*args, **kwargs)
            # Create child here
    

    在这两个选项中,如果只希望在创建父项时创建子项 创建 (不是

        2
  •  0
  •   RemcoGerlich    5 年前

    我想知道这样的东西是否适合你:

    class Child1(Parent):
        class Meta:
            db_table = 'whateverappparentisin_parent'
            managed = False
    

    我不确定Django会怎么做,但我的想法是,您得到的模型具有完全相同的字段,由相同的数据库表支持(因此,其他所有内容,例如父对象上的删除,也将在Child1上立即“可见”),而Django不想对其进行迁移。

    但我不知道这是否被允许。