Django如何构造和初始化具有许多依赖关系的复杂模型对象

2024-10-01 00:19:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django模型,看起来像这样:

class ChildClass(Model):
    # define fields

class ParentClass(Model):
    child1 = models.ForeignKey(ChildClass)
    child2 = models.ForeignKey(ChildClass)
    child3 = models.ForeignKey(ChildClass)

每次创建ParentClass实例时,我都需要确保有有效的ChildClass对象。有没有一个合适的或标准的方法来创建这些“依赖”对象?我当前的计划是在__init__中创建子对象,并将它们保存在save,如下所示:

class ChildClass(Model):
    # define fields

class ParentClass(Model):
    child1 = models.ForeignKey(ChildClass)
    child2 = models.ForeignKey(ChildClass)
    child3 = models.ForeignKey(ChildClass)

    def __init__(self):
        child1 = ChildClass()
        child2 = ChildClass()
        child3 = ChildClass()

    def save(self, *args, **kwargs):
        # save each child obejct if it hasn't been saved yet
        for child in [child1, child2, child3]:
            if child.pk is None:
                child.save()

        super(ParentClass, self).save(*args, **kwargs)

有更好的办法吗?你知道吗


Tags: 对象selfchildfieldsmodelmodelssaveclass
1条回答
网友
1楼 · 发布于 2024-10-01 00:19:04

您可能想看看django信号https://docs.djangoproject.com/en/1.8/topics/signals/。在这个模型的post\ init信号上放置一个信号,让它创建并关联子模型。你知道吗

以下是信号列表https://docs.djangoproject.com/en/1.8/ref/signals/

例如:

@reciever(post_init, sender=ParentClass)
def on_parent_class_create(sender, **kwargs):
    instance = kwargs['instance']
    instance.child1 = ChildClass()
    etc...
    ...

相关问题 更多 >