2024-10-01 04:52:53 发布
网友
我有一个家长班:
class Parent(models.Model): field1 = model.CharField() field2 = model.CharField()
还有一个孩子:
有没有可能在保存perent时创建子对象?在
子对象继承父对象的所有字段,但是,无论填充与否,每当保存父对象时,我都需要创建一个新的子对象。在
有什么想法吗?在
我想知道这样的事情对你是否有用:
class Child1(Parent): class Meta: db_table = 'whateverappparentisin_parent' managed = False
我不确定Django将如何处理这个问题,但我的想法是,您可以得到一个具有完全相同字段的模型,由同一个数据库表支持(所以其他所有内容,例如父节点上的删除操作也将在Child1上立即“可见”),而Django不想为其进行迁移。在
但我不知道是否允许。在
您可以使用信号,也可以重写父模型的保存方法。在
@receiver(models.signals.post_save, sender=Parent) def post_parent_save(sender, instance, created, *args, **kwargs): # Create child here
或者
在这两个选项中,如果只想在父对象已创建(而不是更新)时创建子级,则需要添加额外的登录名。对于signals,可以使用created参数,对于重写save方法,需要在调用super save method之前检查模型实例是否有id字段。在
我想知道这样的事情对你是否有用:
我不确定Django将如何处理这个问题,但我的想法是,您可以得到一个具有完全相同字段的模型,由同一个数据库表支持(所以其他所有内容,例如父节点上的删除操作也将在Child1上立即“可见”),而Django不想为其进行迁移。在
但我不知道是否允许。在
您可以使用信号,也可以重写父模型的保存方法。在
或者
^{pr2}$在这两个选项中,如果只想在父对象已创建(而不是更新)时创建子级,则需要添加额外的登录名。对于signals,可以使用created参数,对于重写save方法,需要在调用super save method之前检查模型实例是否有id字段。在
相关问题 更多 >
编程相关推荐