Форум сайта python.su
Если общими словами и на примере, то вот здесь http://examples.flask-admin.org/sqla/simple/admin/userview/ колонку email для harry оставить. А для amelia сделать так, как будто такой колонки не существует.
class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) login = db.Column(db.String(80), unique=True) password = db.Column(db.String(64)) is_editor = db.Column(Boolean) # Flask-Login integration def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False def get_id(self): return self.id def __str__(self): return self.login class UserView(sqla.ModelView): # я так понимаю здесь нужно как-то определить какой юзер залогинен # но print(dir(login.current_user.)) выдаёт следующее # ['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] def is_accessible(self): return login.current_user.is_authenticated
Офлайн
В этой ветке вообще никого не бывает?
Ладно с колонками, вынесу в отдельную таблицу через отношение, и скрою её целиком.
Подскажите хотя бы как автоматически сохранять имя текущего пользователя, когда он создаёт запись или правит?
class testDb(db.Model): id = db.Column(db.Integer, primary_key=True) number = db.Column(db.String(8), unique=True, index=True) lastUpdate = db.Column(db.DateTime, onupdate=db.func.localtimestamp()) author = ???
Офлайн
Может привязаться к модели пользователя по его айди?
class User(db.Model): id = db.Column(db.Integer, primary_key=True) ....
Офлайн
Ок. К внешнему ключу этим привязали.
А где происходит вставка этого id?
Если добавить:
author = db.Column(db.Integer, db.ForeignKey('User.id')) autor_rel = db.relationship('User')
Офлайн
Дык в функции которая изменяет у вас значения добавьте запись в ето поле значение юзера который ето делает - у вас же есть статус залогиненного юзера в вебформе и его значения?
Офлайн
ZerGЯ использую flask-admin. И надеялся в нём есть инструмент для этого.
Дык в функции которая изменяет у вас значения добавьте запись в ето поле значение юзера который ето делает
def edit_view(self): """ Edit model view """ return_url = get_redirect_target() or self.get_url('.index_view') if not self.can_edit: return redirect(return_url) id = get_mdict_item_or_list(request.args, 'id') if id is None: return redirect(return_url) model = self.get_one(id) if model is None: return redirect(return_url) form = self.edit_form(obj=model) if self.validate_form(form): if self.update_model(form, model): if '_continue_editing' in request.form: flash(gettext('Record was successfully saved.')) return redirect(request.url) else: return redirect(return_url) if request.method == 'GET': self.on_form_prefill(form, id) form_opts = FormOpts(widget_args=self.form_widget_args, form_rules=self._form_edit_rules) return self.render(self.edit_template, model=model, form=form, form_opts=form_opts, return_url=return_url)
Офлайн