Size: a a a

2020 June 18

V

Vlad in Python Flask
Знаю, что топорно пишу, сейчас попытаюсь подробнее
источник

AT

Alex Ted in Python Flask
не важно как ты пишешь
источник

AT

Alex Ted in Python Flask
важно что за проблема
источник

AT

Alex Ted in Python Flask
опиши технически, что затрудняет твою работу
источник

V

Vlad in Python Flask
Есть две модели:

class Camera(Base):
   id = db.Column(db.Integer, primary_key=True, autoincrement=True)
   name = db.Column(db.String, nullable=False)
   events = db.relationship('Event', secondary='event_camera', back_populates='cameras')

class Event(Base):
   id = db.Column(db.Integer, primary_key=True, autoincrement=True)
   name = db.Column(db.String, unique=True, nullable=False)
   description = db.Column(db.String)
   cameras = db.relationship('Camera', secondary='event_camera', lazy='dynamic', back_populates='events')

Для камеры отправляю данные

{
 "name": "234234234234",
 "events": [
   1, 2
 ]
}

и записываю через for в модель, получаю ошибку

AttributeError: 'int' object has no attribute '_sa_instance_state'
источник

V

Vlad in Python Flask
что очень-то и логично, он просто записать модели Event, а не их fk
источник

T

Tishka17 in Python Flask
Vlad
Сейчас я получаю валидный дикт от схемы и записываю данные в модель. С обычными параметрами всё ок. Вопрос как поступать с связями
хаха. у меня про связи был тот же вопрос. Решил что никакие связанные объекты не должны прилетать в запросе, только FK
источник

T

Tishka17 in Python Flask
А для m2m вообще делать отдельный endpoint
источник

V

Vlad in Python Flask
Tishka17
хаха. у меня про связи был тот же вопрос. Решил что никакие связанные объекты не должны прилетать в запросе, только FK
это работает при one to one, в случае one to many, в жопке
источник

AT

Alex Ted in Python Flask
Vlad
это работает при one to one, в случае one to many, в жопке
пиши адаптеры
источник

V

Vlad in Python Flask
Alex Ted
пиши адаптеры
подробнее можно как это должно быть?
источник

T

Tishka17 in Python Flask
с o2m нет жопы. Ты должен редактировать объект, который один из many, а не тот к которому они приаттачены
источник

AT

Alex Ted in Python Flask
ну стандартный паттерн адаптер
источник

V

Vlad in Python Flask
я знаю что такое адаптер, вопрос в том, что он должен делать)
источник

AT

Alex Ted in Python Flask
в нем ты вызываешь/создаешь связанную модель
источник

AT

Alex Ted in Python Flask
ты не можешь просто так передать в атрибут инт и ожидать  что объект сам себя создаст
источник

V

Vlad in Python Flask
Tishka17
А для m2m вообще делать отдельный endpoint
если я даже сделаю отдельный поинт, вопрос остаётся как сохранять их в модель и работать
источник

T

Tishka17 in Python Flask
как FK
источник

V

Vlad in Python Flask
А, точнее быть, вы предлагаете создать пустой объект Event и добавить в него ID и сохранить в camera.events.append()?
источник

V

Vlad in Python Flask
без получения этого объекта из базы ?
источник