我想编写一个模型方法来修改它的嵌套字段
我在迭代与主模型相关的对象时遇到了麻烦。代码特别是:
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行无故障地运行并且我接收到转换后的温度。然而,for循环给出了以下错误:
TypeError: 'RelatedManager' object does not support indexing
我真的希望能够单独遍历Data
模型的每个实例,这样我就可以像使用Currently
模型一样转换温度。
我也在下面列出了相关代码。如果您需要查看其他内容,请与我们联系。我非常感谢任何有关我的方法的帮助或反馈!
追溯
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()
答案 0 :(得分:0)
您可以使用获取所有对象然后迭代它。
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 hourly_data in self.hourly.data.all():
hourly_data.get_si_units()