Giter Site home page Giter Site logo

Comments (7)

aminalaee avatar aminalaee commented on June 3, 2024

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.

smbrine avatar smbrine commented on June 3, 2024

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_updateand 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.

aminalaee avatar aminalaee commented on June 3, 2024

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.

aminalaee avatar aminalaee commented on June 3, 2024

@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.

smbrine avatar smbrine commented on June 3, 2024

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.

aminalaee avatar aminalaee commented on June 3, 2024

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.

smbrine avatar smbrine commented on June 3, 2024

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 TextAreas. 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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.