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 に設定して、再度計算しないようにします。これを達成する方法がわかりませんか?またはそれが達成できるかどうか?

       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 に答える