0

我的 Django 应用程序中有一个表,它具有以下模型类:-

  class LiveRoutes(models.Model):
       user = models.ForeignKey(User)
       route = models.ForeignKey(UserRoutes)
       status = models.ForeignKey(LiveRoutesStatus)
       traveller = models.ManyToManyField('LiveRouteTravellers')
       datetime = models.DateTimeField()
       calculated = models.NullBooleanField()
       def __unicode__(self):
         return self.route.__unicode__()

我想定义一个函数来对每一行的数据进行计算,并且在执行计算之后,我想将计算值设置为 False,这样我就不会再计算了。我不确定如何实现这一目标?OR 是否有可能实现?

       def CheckTheCalculateField(self):
         #code to check the value in calculate field of each row

任何帮助都将受到高度赞赏和感谢。

4

1 回答 1

1

像这样的东西:

for route in LiveRoutes.objects.filter(calculated=False).iterator():
    # Do your calculation

    route.calculated = True
    route.save()

你有一个复杂的地方,你计算为NullBooleanField. 您可能希望它作为一个普通的布尔字段,默认为False.

根据调用方式以及同时发生的其他活动,您还会遇到数据库事务的许多潜在问题。

另一种方法是 django-async。这样,您将发布一份工作来进行一段时间后发生的计算。见https://pypi.python.org/pypi/django-async/

于 2013-03-01T06:46:40.783 回答