Я использую Flask-SQLAlchemy и хочу создать отношение один ко многим.У меня есть класс мусорных контейнеров, и у каждого мусорного контейнера есть список пикапов.У меня есть страница «История пикапов», где я хочу показать все предыдущие пикапы.Если я изменю имя местоположения корзины, тогда на датчиках, которые ранее соответствовали этой корзине, теперь отображается пустое имя местоположения, как на изображении здесь .
. Очевидно, что корзинаОбновление имени прошло успешно, потому что вы видите «WEB» в правой части экрана.Я заметил, что если я изменил имя корзины до ее первоначального значения, то список раскладки работает правильно, я предполагаю, потому что он нашел корзину с именем, совпадающим с тем, которому он был изначально назначен.
Здесьмой код для обновления информации о корзине:
def update_dumpster(id):
dump = Dumpster.query.get_or_404(id)
form = UpdateDumpsterForm()
if form.validate_on_submit():
#Update the dumpster information
dump.location = form.location.data
dump.lat = form.lat.data
dump.lng = form.lng.data
dump.full = form.full.data
for pickup in dump.pickups:
pickup.dumpsterLocation = dump.location
db.session.commit()
Изначально я не включил цикл for, но когда я заметил свою проблему, это была моя первая попытка решения.Я также попробовал pickup.dumpster.location = dump.location
, но это также не помогло решить проблему.
Вот классы, которые я использую в models.py:
class Dumpster(db.Model):
id = db.Column(db.Integer, primary_key=True)
location = db.Column(db.String, nullable=False)
full = db.Column(db.Boolean, nullable=False)
onRoute = db.Column(db.Boolean, nullable=False)
lat = db.Column(db.Float, nullable=False)
lng = db.Column(db.Float, nullable=False)
pickups = db.relationship('Pickup', backref='dumpster', lazy=True)
def __repr__(self):
return "Dumpster({}, {})".format(self.id, self.location)
class Pickup(db.Model):
id = db.Column(db.Integer, primary_key=True)
date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
time = db.Column(db.String, nullable=True, default='midnight')
dumpsterLocation = db.Column(db.String, db.ForeignKey('dumpster.location'), nullable=False)
def __repr__(self):
return "Pickup({}, {}, {})".format(self.id, dumpster.location, self.date)
Любая помощь или понимание будут высоко оценены.