У меня довольно загадочная проблема в одной из моих моделей.Я переопределил __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 - это таблица компоновщиков (использующая through='...'
) между Milestone
и Program
.
.Milestones
добавляется в Program
только при создании программы, но сейчас, когда я даже открываю Программу в интерфейсе администратора Django, она запускает цикл for m...
(что делает невозможным удаление любых объектов ProgramMilestone
в Djangoadmin, так как они будут просто переделаны после обновления).
Не понимаю ли я, что делает __init__
, и если да, то как я могу создать такое поведение (то есть одноразовый код, который запускается только при создании экземпляра)