Форум сайта python.su
Вечер добрый.
Снова возникла проблема которую уже полдня не могу решить, и в интернетах молчат, наверняка опять туплю и все же.
Нужно получить id модели при внесении изменений, дохожу до этого следующим образом:
class MyClass(ModelView): def on_model_change(self, form, model, is_created): if is_created: ... else: id = get_pk_value(model) ... if not custom_validator(id): raise ValidationError('not valid') super().on_model_change(form, model, is_created)
NameError: name 'get_pk_value' is not defined
Отредактировано kaldown (Окт. 1, 2015 21:19:23)
Офлайн
self потеряли?
Офлайн
Тогда он так ответит:
File "/usr/home/kaldown/projects/flask/app/views.py", line 85, in on_model_change id_row = get_pk_value(self, model) NameError: name 'get_pk_value' is not defined
def on_model_change(self, form, model, is_created): if not_empty(form.name.data): if is_created: have_count = count_sum(form.count.name, form.name.data) -\ count_sum(form.count_out.name, form.name.data) else: id = get_pk_value(form) count, count_out = rollback_count(id) have_count = count_sum(form.count.name, form.name.data) -\ count_sum(form.count_out.name, form.name.data) -\ count + count_out if form.count_out.data > have_count + form.count.data: raise ValidationError('На выход больше чем имеется') else: super().on_model_change(form, model, is_created)
def count_sum(what_to_sum, where_to_sum): with conn.cursor() as cur: cur.execute( """ SELECT SUM(%s) FROM garage WHERE lower(name)=lower('%s') """ % (what_to_sum, where_to_sum)) return cur.fetchone()[0] def not_empty(name_field): with conn.cursor() as cur: cur.execute( """ SELECT name FROM garage WHERE lower(name)=lower('%s') """ % (name_field)) return cur.fetchone() is not None def rollback_count(id_row): with conn.cursor() as cur: cur.execute( """ SELECT count,count_out FROM garage WHERE id=%s """ % (id_row)) return cur.fetchone()
Отредактировано kaldown (Сен. 10, 2015 07:02:08)
Офлайн
kaldown
Тогда он так ответит:
kaldown
get_pk_value(self, model)
self.get_pk_value(model)
Офлайн
Тяжело конечно быть глупым.
Спасибо большое за помощь.
Отличный форум!
Офлайн