Я работаю над проектом с использованием Django и postgresdb с потоковой передачей данных с использованием pipelinedb. Сценарий синхронизации выполняет это. Все докеризовано.
Данные обновляются каждые 60 секунд на тестовом сервере.
Я добавил это поле в модель:
location = models.ForeignKey('Location', related_name='assigned_sensor', on_delete=models.CASCADE, null=True)
И для справки: модели погоды и местоположения:
class WeatherStatsMrel(models.Model):
id = models.BigIntegerField(db_column='$pk', primary_key=True)
loc = models.CharField(max_length=3, null=True)
dat = models.DateField(blank=True, null=True, editable=True)
tim = models.TimeField(blank=True, null=True, editable=False)
aws = models.FloatField(blank=True, null=True, editable=False)
awd = models.TextField(blank=True, null=True, editable=False)
mws = models.FloatField(blank=True, null=True,editable=False)
mwd = models.TextField(blank=True, null=True,editable=False)
tmp = models.FloatField(blank=True, null=True,editable=False)
hum = models.FloatField(blank=True, null=True,editable=False)
r10 = models.FloatField(blank=True, null=True,editable=False)
r60 = models.FloatField(blank=True, null=True,editable=False)
rda = models.FloatField(blank=True, null=True,editable=False)
rcu = models.TextField(blank=True, null=True,editable=False)
rad = models.TextField(blank=True, null=True,editable=False)
sun = models.TextField(blank=True, null=True,editable=False)
location = models.ForeignKey('Location', related_name='assigned_sensor', on_delete=models.CASCADE, null=True)
class Meta:
db_table = 'weather_stats_mrel'
def __unicode__(self):
return str({self.loc}, {self.dat}, {self.tim}, {self.aws}, {self.awd}, {self.mws}, {self.mwd}, {self.tmp}, {self.hum}, {self.r10}, {self.r60}, {self.rda}, {self.rcu}, {self.rad}, {self.sun})
class Location(models.Model):
id = models.AutoField(primary_key=True)
abbreviated_name = models.CharField(max_length=3)
full_name = models.CharField(max_length=25)
def __str__(self):
return self.abbreviated_name
Когда я запускаю сервер, все в порядке. На странице администратора (страница администратора по умолчанию в Django) я могу перейти на страницу weather_stats_mrel в попытке , чтобы просмотреть поступающие данные.
Однако, когда Pipelindb обновляет таблицу, я получаю эту ошибку при попытке просмотреть страницу:
ProgrammingError at /admin/test_sensor_app/weatherstatsmrel/
column weather_stats_mrel.location_id does not exist
LINE 1: ...er_stats_mrel"."rad", "weather_stats_mrel"."sun", "weather_s...
^
Request Method: GET
Request URL: http://localhost:8000/admin/test_sensor_app/weatherstatsmrel/
Django Version: 2.1.1
Exception Type: ProgrammingError
Exception Value:
column weather_stats_mrel.location_id does not exist
LINE 1: ...er_stats_mrel"."rad", "weather_stats_mrel"."sun", "weather_s...
^
Насколько я понимаю, Django должен автоматически добавлять это поле, верно? Или мне теперь нужно добавить эту таблицу вручную? Где бы я положил его в модель?
У меня никогда раньше не было этой проблемы при использовании ForeignKeys, но опять же, это первый раз, когда я работаю с таблицами, которые предварительно сгенерированы до того, как Django даже коснулся их.
Есть ли решение этой проблемы? Кто-нибудь еще сталкивался с этим раньше?