@pcdesign

Как в Sqlalchemy сделать разные insert в зависимости от типа юзера?

Переписываю один проект.
И там такая ситуация.
Юзеры вставляют в таблицу данные вот так:
insert into hange (date,person,from_cur,from_sum,to_cur,to_sum,comment) values (now(),?,?,?,?,?,?)


А администраторы вот так:

insert into hange (date,person,from_cur,from_sum,to_cur,to_sum,course,fee_cur,fee,fee_percent,comment) values (?,?,?,?,?,?,?,?,?,?,?)


То есть админы вставляют больше данных, чем обычные юзеры.

Вопрос как быть с __init__ в описании модели?

class Hange(db.Model):
    # Таблицы и поля. 
    
    def __init__ # Вот каким он должен быть?
  • Вопрос задан
  • 287 просмотров
Решения вопроса 1
zs000
@zs000
1. Как вариант - отнаследовать от Hange два класса, для юзеров и для админов.

2. Если по вашему, то в __init__ должен быть анализ: от какого юзера создается обьект (это уж вы должны решить, как определять: через параметр или через app_context или через request). А также парсинг args/kwargs.
Если юзер - админ, из args/kwargs достаются course,fee_cur (и т.е.) и обьект инициализируется с этими значениями. Если их нет в args/kwargs - поднимаем ошибку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы