我的一个模型中有一个相当神秘的问题。我已经覆盖了 __init__
如下:
class Program(models.Model)
...
def __init__(self, *args, **kwargs):
super(Program, self).__init__(*args, **kwargs)
for m in Milestone.objects.all():
try:
ProgramMilestone.objects.create(milestone = m, program = self)
except IntegrityError: # The link already exists.
pass
其中 ProgramMilestone 是 Milestone
和 Program
之间的链接器表(使用 through='...'
)。
我希望所有 Milestones
仅在程序创建时添加到 Program
中,但现在每当我在 Django 的管理界面中打开程序时,它都会运行for m...
循环(使得无法删除 Django 管理中的任何 ProgramMilestone
对象,因为它们只会在刷新时重新生成)。
我是否误解了 __init__
的作用,如果是,我该如何创建这种行为(即仅在实例化时运行的一次性代码)?
我是一名优秀的程序员,十分优秀!