Я пишу инвентаризационное приложение с флягой + sqlalchemy, короткая история у меня короткая, у меня есть таблица с именем Билл с id, bill_id и bill_date, и таблица инвентаря с id, bill_number, loctation. Затем, используя поле выбора запроса, пользователь выбирает bill_number, заполняет остальные поля и сохраняет информацию в БД.
, но если я обновляю bill_number в таблице счетов, необходимо, чтобы также bill_number в таблице инвентаризации обновил все этизаписи.
Я попытался с Foreignkey, создание оператора for для обновления всех записей, и ничего не работает. Кроме того, метод обновления, но работает только с static_values, но с переменными вызвал буквальную ошибку.
class Bill(db.Model):
id = db.Column(db.Integer, primary_key=True)
bill_number = db.Column(db.String(64), index=True, unique=True)
bill_date = db.Column(db.Date, index=False, unique=False)
class Location(db.Model):
id = db.Column(db.Integer, primary_key=True)
location_name = db.Column(db.String(64), index=True, unique=True)
class Inventory(db.Model):
id = db.Column(db.Integer, primary_key=True)
serial_number = db.Column(db.String(64), index=True, unique=True)
bill_number = db.Column(db.String(64), db.ForeignKey('bill.bill_number'))
location = db.Column(db.String(64), db.ForeignKey('location.location_name'))
update = Inventory.query.filter(Inventory.bill_number==old_bill).update({ Inventory.bill_number : new_bill})
, где old_bill и new_bill взяты из формы, если попытка с:
Inventory.query.filter(Inventory.bill_number=='666').update({ Inventory.bill_number : '999'})
работает как шарм, но мне нужно использовать значения из формы, а не эти статические значения. Иностранные ключи используются, но я не знаю, действительно ли они работают так, как я реализовал.
Даже пробовал с:
old = form.old.data
new = form.new.data
all = Inventory.query.filter_by(bill_number=old).all()
for i in all:
i.bill_numer = new
db.session.commit()
но нет, не могу обновить всю таблицу инвентаря.