Возможно, вы могли бы сделать что-то вроде
starttime= time.time()
while True:
%run "script1.py"
time.sleep(60.0 - ((time.time() - starttime) % 60.0))
if( (starttime - time.time()) > 240): %run "script2.py"
Я думаю, что использование django формы может быть ответом, как обрисовано в общих чертах в этой документации (поиск m2m...).
Отредактированный для добавления некоторого объяснения других людей, у которых могла бы быть та же проблема:
скажите, что у Вас есть модель как это:
from django.db import models
from django.forms import ModelForm
class Foo(models.Model):
name = models.CharField(max_length = 30)
class Bar(models.Model):
foos = models.ManyToManyField(Foo)
def __unicode__(self):
return " ".join([x.name for x in foos])
затем Вы не можете назвать unicode () на несохраненном объекте Панели. Если Вы действительно хотите распечатать вещи, прежде чем они будут сохранены, необходимо сделать это:
class BarForm(ModelForm):
class Meta:
model = Bar
def example():
f1 = Foo(name = 'sue')
f1.save()
f2 = foo(name = 'wendy')
f2.save()
bf = BarForm({'foos' : [f1.id, f2.id]})
b = bf.save(commit = false)
# unfortunately, unicode(b) doesn't work before it is saved properly,
# so we need to do it this way:
if(not bf.is_valid()):
print bf.errors
else:
for (key, value) in bf.cleaned_data.items():
print key + " => " + str(value)
Так, в этом случае Вы, должно быть, сохранили объекты Foo (который Вы могли бы проверить прежде, чем сохранить их, с помощью их собственной формы), и прежде, чем сохранить модели со многими ко многим ключам, можно проверить их также. Все без потребности сохранить данные слишком рано и испортить базу данных или контакт с транзакциями...
Я добавил бы поле, которое указывает, являются ли объекты "проектом" или "живой". Тем путем они сохраняются через запросы, сессии, и т.д. и django прекращает жаловаться.
Можно затем отфильтровать объекты только показать "живые" объекты согласно общественному мнению и только показать, что "проект" возражает против пользователя, который создал их. Это может также быть расширено для разрешения "заархивированных" объектов (или любое другое состояние, которое имеет смысл).