ネストされたフィールドを変更するモデルメソッドを記述したいモデルインスタンスの複数のフィールドを反復処理するにはどうすればよいですか?
メインモデルに関連するオブジェクトを反復するのに問題があります。特定のコードは次のとおり
def set_si_units(self):
self.currently.get_si_units()
for i in range(0, self.hourly.data.count()):
self.hourly.data[i].get_si_units()
滞りなくself.currently
ランを変更し、私は変換温度を受ける2行目。ループのためしかし、私に次のエラーを与える:
TypeError: 'RelatedManager' object does not support indexing
私は本当に私がCurrently
モデルでやっているように私には、温度を変えることができますので、個別にData
モデルの各インスタンスを反復処理することができるようにしたいと思います。
私は以下の関連コードも含めました。あなたが何か他のものを見る必要があるかどうか私に知らせてください。私のアプローチに関して、どんな助けやフィードバックがあっても大歓迎です!
トレースバック
File "/path_to_project/project/weather/models.py", line 137, in get_si_units
self.hourly.data[i] = self.hourly.data[i].get_si_units()
TypeError: 'RelatedManager' object does not support indexing
get_si_units()(例えば、現在&データ)と
クラス
class SomeClass(model.Models):
temperature = models.FloatField(null=True, blank=True)
... # Other fields
def convert_f_to_c(self, temperature_f):
...
def get_si_units(self):
data_point = self
data_point.temperature = self.convert_f_to_c(self.temperature)
... # Convert other fields
return data_point
私は
class Location(models.Model):
currently = models.OneToOneField(Currently, on_delete=models.CASCADE)
hourly = models.OneToOneField(Hourly, on_delete=models.CASCADE)
...
def set_si_units(self):
self.currently.get_si_units()
for i in range(0, self.hourly.data.count()):
self.hourly.data[i].get_si_units()
にこだわっている
Locationクラス
一般的に、Pythonでは、あなたが何かのサイズの 'range'を反復していると分かっていると、間違っていることが分かります。 –