Size: a a a

2020 October 14

V

Vladi in Python Flask
Alex
ну... пакет с моделями

models
 __init__.py
 foo.py
 bar.py
в __init__.py
прописывается импорт всех моделей?
источник

A

Alex in Python Flask
Vladi
в __init__.py
прописывается импорт всех моделей?
если мы говорим про алхимию, то чаще всего да.
источник

A

Alex in Python Flask
потому как модели должны быть в метадате например для миграций или DDL.
источник

T

Tishka17 in Python Flask
Vladi
в __init__.py
прописывается импорт всех моделей?
Всех публичных. Всякие абстрактные модели и миксины не будут там
источник

K

Kristina in Python Flask
как в алхимии написать такой запрос:

INSERT INTO devices(foo, bar, device_type) VALUES('foo', 'bar', (INSERT INTO types name='' RETURNING id))
?
источник

K

Kristina in Python Flask
device_in_db = models.Device(
   name=device.name.lower(),
   device_type_id=models.DeviceType(
       device_type=device.device_type.lower()
   ).id,
)


пробую так, но, естественно, ничего не получается
источник

T

Tishka17 in Python Flask
Kristina
device_in_db = models.Device(
   name=device.name.lower(),
   device_type_id=models.DeviceType(
       device_type=device.device_type.lower()
   ).id,
)


пробую так, но, естественно, ничего не получается
Делаешь девайс, после флаша у него берешь айди
источник

T

Tishka17 in Python Flask
Или после коммита
источник

T

Tishka17 in Python Flask
Если тебе айди нужен только для связей, то юзай релейшены, а не заполняй айди как фк. Это позволит не делать флаш лишний
источник

K

Kristina in Python Flask
да у меня таблица device состоит из device_name и device_type_id (релейшен на device_type таблицу)

суть в том, чо я хочу добавлять на эндпоинте не по айдишнику тип девайса, а строкой

вначале пробую

device_in_db = models.Device(
   name=device.name.lower(),
   device_type_id=db.query(models.DeviceType)
   .filter(models.DeviceType.device_type == device.device_type)
   .first()
   .id,
)


на эксепшене мне нужно добавить девайс вместе с созданием девайс тайпа
источник

T

Tishka17 in Python Flask
О_о
источник

K

Kristina in Python Flask
реквест такой на добавление девайса

{“device_name”: “test”, “device_type”: “test type”}
источник

D

Dmitriy in Python Flask
источник

K

Kristina in Python Flask
чтоб не слать айдишник типа в реквесте, я хочу слать его именем
источник

T

Tishka17 in Python Flask
Kristina
да у меня таблица device состоит из device_name и device_type_id (релейшен на device_type таблицу)

суть в том, чо я хочу добавлять на эндпоинте не по айдишнику тип девайса, а строкой

вначале пробую

device_in_db = models.Device(
   name=device.name.lower(),
   device_type_id=db.query(models.DeviceType)
   .filter(models.DeviceType.device_type == device.device_type)
   .first()
   .id,
)


на эксепшене мне нужно добавить девайс вместе с созданием девайс тайпа
А почему не сделать device_type PK и FK. Зачем тут числовой айди?
источник

K

Kristina in Python Flask
о, это то, что нужно
источник

K

Kristina in Python Flask
Tishka17
А почему не сделать device_type PK и FK. Зачем тут числовой айди?
можешь привести пример, пжалста?
источник

T

Tishka17 in Python Flask
Kristina
да у меня таблица device состоит из device_name и device_type_id (релейшен на device_type таблицу)

суть в том, чо я хочу добавлять на эндпоинте не по айдишнику тип девайса, а строкой

вначале пробую

device_in_db = models.Device(
   name=device.name.lower(),
   device_type_id=db.query(models.DeviceType)
   .filter(models.DeviceType.device_type == device.device_type)
   .first()
   .id,
)


на эксепшене мне нужно добавить девайс вместе с созданием девайс тайпа
Я бы предположил что-то такое


dtype = DeviceType(device_type=device_type)
db_dev = Device(
 name=device.name.lower(),
 device_type = dtype
)
db.session.add(db_dev)


device_type - релейшн, с правильными on_update
источник

T

Tishka17 in Python Flask
Kristina
можешь привести пример, пжалста?
Ну а зачем тебе числовой айди тут?
источник

K

Kristina in Python Flask
вот две таблички
источник