0

私はモデルを呼んでいます Plan

計画にはstate、それにcity関連付けられています

私は他のモデルと呼ばれ、それぞれのWeather1日あたりのさまざまな時間のデータを持っていますcitystate

ここで、weatherという追加の辞書を使用してすべてのPlanオブジェクトを取得したいと思います。

手順は次のとおりです

  1. すべての計画オブジェクトを取得します
  2. 現在、州と都市に基づいて、各計画には気象テーブルに多くの行があります
  3. すべての列を集約したい。たとえば、その都市に5つの行があり、州と気温の値がである場合 20 , 21 , 22 , 23 , 24。次に、すべての温度、つまり22の平均を取り、プランモデルの新しい辞書に保存します。

私がアクセスできるようPlan.weather.temperatureにそしてそれは来る22

forループを使用できますが、それは多くのdbクエリになります。1つのクエリまたは可能なオプションでそれを行うことができます

編集:

class Plan(model.model):
    name = tinymce_models.HTMLField(blank=True, null=True)
    region = models.ForeignKey(Region)
    district = models.ForeignKey(District)

 class Weather(model.model):

        region = models.ForeignKey(Region)
        district = models.ForeignKey(District)
        temp_max = models.IntegerField(blank=True, null=True, verbose_name='Max temperature (C)')
        temp_min = models.IntegerField(blank=True, null=True, verbose_name='Min temperature (C)')
4

1 に答える 1

2

モデルによって異なりますが、次のようなものです。

Plan.objects.filter(region__name="CA").annotate(avg_temperature=Avg("region__weather__temp_max"))

フィールドはavg_temperature、クエリによって返されたオブジェクトで使用できるようになります。この名前は、注釈に指定されたキーワード引数に基づいてカスタマイズできます。

または、こちらをご覧ください: https://docs.djangoproject.com/en/dev/topics/db/aggregation/

Django にはこれらの種類のクエリが組み込まれています。集約と注釈 API がこれを容易にできない場合 (すぐに使用できる強力な候補のように思われます)、生のクエリを作成するオプションがあります。

https://docs.djangoproject.com/en/dev/topics/db/sql/

于 2012-11-01T04:25:00.000 に答える