Size: a a a

2020 June 04

T

Tishka17 in Python Flask
tot samiy neizvestniy
Я чёт думал, есть какой-то метод в алхимии для этого уже
зачем?
источник

T

Tishka17 in Python Flask
Gleb B
а так не подойдет? .query(Model.id)
это будет список туплов и это не по существущим инстансам, а из базы
источник

tn

tot samiy neizvestni... in Python Flask
Tishka17
зачем?
Да незачем, в принципе
источник

tn

tot samiy neizvestni... in Python Flask
Просто привык к джанго орм...
источник

T

Tishka17 in Python Flask
ИМХО, в джанге многие вещи  сделаны для компенсации их ущербной архитектуры. С учетом всех этих вещей получилось действительно неплохо, но можно было и проще
источник

B

Bv in Python Flask
Ребят помогите выполнить запрос с поиском по внешним ключам
есть 3 таблицы

class Workshop(UserMixin, db.Model):
   id = db.Column(db.Integer, primary_key=True)
   name = db.Column(db.String(255))  # Наименование

subscriber_workshop = db.Table(
   'subscriber_workshop',
   db.Column('subscriber_id', db.Integer(), db.ForeignKey('subscriber.id')),
   db.Column('workshop_id', db.Integer(), db.ForeignKey('workshop.id')),
   extend_existing = True
)

class Subscriber(db.Model):
   id = db.Column(db.Integer, primary_key=True)

   name = db.Column(db.String(255), index=True)
   workshop = db.relationship(Workshop, secondary=subscriber_workshop,
                              backref=db.backref('workshop', lazy='joined'))

выполняю запрос...
get = Subscriber.query.filter(Subscriber.workshop == 1)

Ругается на то что нет workshop в таблице  Subscriber
источник

GB

Gleb B in Python Flask
херню написал)
источник

W

WiCKed in Python Flask
Всем привет
источник

W

WiCKed in Python Flask
У меня в модели в алхимии имеется поле relationship many to many. Подскажите плиз как в алхимии обновить такое поле у объекта? При создании нового объекта я просто передаю список из объектов той модели на которую ссылаюсь, но при использовании db.session.update у меня так не работает. Как это лучше реализовать?
источник

E

Eldar in Python Flask
WiCKed
У меня в модели в алхимии имеется поле relationship many to many. Подскажите плиз как в алхимии обновить такое поле у объекта? При создании нового объекта я просто передаю список из объектов той модели на которую ссылаюсь, но при использовании db.session.update у меня так не работает. Как это лучше реализовать?
делаешь квери а потом аппендишь
источник

W

WiCKed in Python Flask
Eldar
делаешь квери а потом аппендишь
Что-то я явно делаю не так. Само обновление:
db.session.query(Product).filter(Product.id == product_id).update(data)
а data является словарем параметров полученных от юзера и провалидированных маршмеллоу. А то поле (категория) которое мэни то мэни содержит список из объектов модели Категория. При создании нового продукта такое работает,  при обновлении он мне говорит

sqlalchemy.exc.StatementError: (builtins.TypeError) unhashable type: 'list' [SQL: UPDATE products SET id = product_id AND id = category_id=?, name=?, rating=?, featured=?, created_at=?, expiration_date=?, brand_id=?, items_in_stock=? WHERE products.id = ?] [parameters: [immutabledict({})]]
источник

ST

Storm Trooper in Python Flask
WiCKed
У меня в модели в алхимии имеется поле relationship many to many. Подскажите плиз как в алхимии обновить такое поле у объекта? При создании нового объекта я просто передаю список из объектов той модели на которую ссылаюсь, но при использовании db.session.update у меня так не работает. Как это лучше реализовать?
Что значит обновить такое поле в твоём понимании?
источник

W

WiCKed in Python Flask
Storm Trooper
Что значит обновить такое поле в твоём понимании?
заменить содержимое на новое 🙂
источник

ST

Storm Trooper in Python Flask
WiCKed
заменить содержимое на новое 🙂
Уточняю: ты хочешь заменить содержимое поля relationship?
источник

ST

Storm Trooper in Python Flask
Если это так, то тебе необходимо найти модельку и в этой модельке поле, на которое ссылается relationship, обновить это поле там новыми данными.
источник

W

WiCKed in Python Flask
Storm Trooper
Уточняю: ты хочешь заменить содержимое поля relationship?
у меня основная модель которую я обновляю - продукт. у него есть поле категория, то есть модель категория. У одного продукта может быть несколько категорий. Пользователь методом ПУТ присылает мне готовый объект для обновления по айди. Все обновляется ОК кроме этих самых категорий, их я передаю списокв объектов категории
источник

ST

Storm Trooper in Python Flask
если пользователь тебе присылает готовый объект, то добавь в этот обект категории, какие проблемы то?

product.category = [твой список категорий]
источник

ST

Storm Trooper in Python Flask
Потом сешн ад и сешн комит и всё
источник

W

WiCKed in Python Flask
Storm Trooper
если пользователь тебе присылает готовый объект, то добавь в этот обект категории, какие проблемы то?

product.category = [твой список категорий]
Да, можно найти мой продукт таким образом:
product = Product.query.get(1)
и далее менять все поля вручную:
product.name = …
product.categories = …

но ведь это не удобно

Я воспользовался методом апдейт:
db.session.query(Product).filter(Product.id == product_id).update(data)
Вот и проблема заключается в том что метод апдейт обновляет все корректно кроме списка категорий - не нравится ему список и все!

В итоге мне пришлось категории онбовить отдельно первым способом, а остальное методом апдейт. Вопрос был именно про метод апдейт.
источник

ST

Storm Trooper in Python Flask
WiCKed
Да, можно найти мой продукт таким образом:
product = Product.query.get(1)
и далее менять все поля вручную:
product.name = …
product.categories = …

но ведь это не удобно

Я воспользовался методом апдейт:
db.session.query(Product).filter(Product.id == product_id).update(data)
Вот и проблема заключается в том что метод апдейт обновляет все корректно кроме списка категорий - не нравится ему список и все!

В итоге мне пришлось категории онбовить отдельно первым способом, а остальное методом апдейт. Вопрос был именно про метод апдейт.
Я пока не встречал чтобы так делали.
Обычно выбирают все продукты и фором обновляют нужные полня у всех продуктов и всё
источник