Comments (10)
from flask-admin.
I ran into an issue trying to set a required property on my model using the new on_model_change
callback because self.session.flush()
is called before it. What is the reason an explicit flush is called before the callback, and can it either be removed or moved to after the callback?
from flask-admin.
You're right - you should have chance to modify something in the callback.
from flask-admin.
Great, thanks (I would have submitted a pull request, but wasn't sure the reasoning behind the flush). Is the explicit flush even needed here?
from flask-admin.
Is the explicit flush even needed here?
Yeah. That's the main point for the whole callback. After flush model has an "id" and one can handle update/create cases in generic way. For example you can fill depended models with created foreign key.
from flask-admin.
I ran into an issue trying to set a required property on my model using the new on_model_change callback because self.session.flush() is called before it.
Use create/update_model.
from flask-admin.
Hmm, I guess this conflicts with my intended use of on_model_change
for setting other required fields on the model not by the form before committing
If I override create_model/update_model, I would have to completely override it's implementation (copy/paste).
Maybe instead of 1 callback/event (on_model_change
), there is before_model_change
and after_model_change
. Since this hasn't been part of a release yet, it wouldn't break compatibility (except for us running off git).
from flask-admin.
I think we should omit flushing for these callbacks: there are cases when you need to modify model before it will be saved. And for some other cases it will work without explicit flushing.
SQLAlchemy is smart enough to flush dependencies in most of the cases: https://gist.github.com/3941123
However, if you will try to access user.id
without flushing, it will be set to None
.
I think it is OK, as new version of flask-admin is not yet released and it is possible to mention in documentation that callback happens before model is comitted, so if you need id
in on_model_change
, flush session.
Adding another on_before_model_change does not look pretty to me.
Thoughts?
from flask-admin.
Sorry, I forgot that overriding of create_model have no any sense.
Maybe instead of 1 callback/event (on_model_change), there is before_model_change and after_model_change
Boo. Very bad idea.
I agree. Removing flush is the best solution. Clients still can call it by themselves.
from flask-admin.
I agree as well.
from flask-admin.
Related Issues (20)
- Intercepting and executing custom code on object creation/update in flask-admin HOT 2
- How to use form_overrides on ListField(StringField)?
- `rediscli` command names should be treated case-insensitively
- Enhancement: Allow page_size_options = [15,30,60] to override 20,50,100 hard coded into page_size_form layout HOT 1
- Error launching the examples using Python 3.12 HOT 1
- QueryAjaxModelLoader and additional filters
- Please update the requirements.txt in examples/sqla/ HOT 1
- Can't use column_filters with peewee ForeignKeyField
- aioflask with Flask>=3.0
- Form column is not being displayed if it starts with underscore "_" HOT 7
- Unable to Render Flask-Admin Edit Form Fields for Variables Stored as JSON HOT 1
- Seeking help from additional volunteers? HOT 7
- Creating custom views for BaseView grouped in a category and passing an id HOT 1
- Can't use multiple `Admin` instances with different Bootstrap themes (`FLASK_ADMIN_SWATCH`) HOT 14
- Flask Admin Reboot: A community version to submit changes HOT 6
- [not issue] Implement flask-admin in Go HOT 2
- QuerySelectField ignores changes to data / default in ModelView.create_form HOT 2
- `can_set_page_size` does not prevent custom page sizes
- Multiple requests caused by 'create_modal' HOT 4
- Add Pallets-eco notice
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flask-admin.