Comments (7)
I think I understand what the issue is, but this was specifically added to make sqladmin work with fastapi-storages.
But I assume you are not using fastapi-storages but just using a FileUpload field, right?
from sqladmin.
Yeah, I use JSONB field in SQLAlchemy, override it with FileUpload field in the admin form, parse json from the file in the on_model_update
and pass the resulting data forward. According to my tests, there's no such case except for mine to get into the elif
statement I changed. It also passes all the tests hence it's definitely not a destructive change!
from sqladmin.
Yeah that makes sense.
I will add a minor change to your PR as I think the current code was because of a hacky workaround I did for fastapi-storages.
from sqladmin.
@smbrine I think I was a bit confused and my previous comment was not accurate.
The issue is that when uploading the file everything works es you explained, you open the file and pass the content as dict to be saved in DB.
The issue comes up when you want to edit the inserted object. You are storing the file content in JSONB but in the edit form you want to show FileField with WTForms. SQLAdmin expects that since this is a FileField, previously a file was stored for this.
Maybe a good question is why don'y you specify a TextField and validate the JSON with the hooks? Since you aren't really storing/editing the file.
from sqladmin.
Because in that case there will be no way to submit a file (except for fully custom form but it's definitely not what I want since it takes way more time to do).
from sqladmin.
But is this accomplished in any tool like Django admin and flask-admin without modifying the behaviour completely? The reason I ask is that is that this is a very specific use-case that you want the create form to accept a file, but in the edit form you want to edit a JSON field.
from sqladmin.
Seems like I have incorrectly explained my point. It's not that I want to have a JSON field in the edit form, there is also UploadForm
since I don't want users to deal with TextArea
s. The idea is for example if one wants to store, say, parseable text file in db in a parsed way (just like my case when I store .json
file as JSONB
instead of the file itself). I haven't used flask-admin, nor do I have expertise in Django admin hence I can't judge here. My point is that I have handled my specific scenario without affecting any other scenarios and now it's fully up to you but there's always a chance that there will be someone else who will also decide to override a field with a FileUpload
!
from sqladmin.
Related Issues (20)
- Menu items within categories are always visible HOT 6
- Admin panel logging
- Use relative URLs instead of absolute URLs HOT 3
- Support the Aiohttp framework HOT 2
- After deleting objects, page size is not maintained
- Hashing strategy for the fields such as password in the creation of a new row HOT 2
- Custom confirmation HTML HOT 1
- Static file over https in AWS with ECS and LoadBalancer HOT 16
- CSS and Javascript files for the Admin not loaded HOT 2
- Not able to edit fields in sql admin when using s3 filetype HOT 3
- Unexpected main page view HOT 6
- Add ModelView.form_query property to create form-filtering feature HOT 2
- override delete model method to perform soft delete HOT 1
- form_overrides doesn't work HOT 2
- SqlAlchemy dataclass support missing HOT 6
- Multiple Admin Instances result in wrong URL's to the views HOT 1
- Ajax query passes incorrect urn when admin mounted on sub fastapi app HOT 3
- Sort symbol is incorrect (wrong direction)
- sqladmin + jinja templates conflict index.html HOT 3
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 sqladmin.