Comments (2)
This very much could get very expensive very fast. 100% agree that IF we implement this, we would need settings to limit how deep/expensive it can get.
Also, for clarification, when would this be called? Is it some kind of additional JavaScript that dynamically calls relations as the user clicks elements on the DD page? Is it called during initial model/query processing, as part of initial DD-page middleware computations? Some in between?
I feel like these details should be determined BEFORE we would try to implement such logic. So it's very clear what our goal is before we start work on it.
from django-dump-die.
For clarification, this original issue post is specifically regarding M2M relations, with the select_related
and prefetch_related
options. It seems they (maybe?) don't output, or don't output in useful ways by default? Need to verify exactly what the output is. Either way, if we implement this, we probably want to also double check output of standard FK/one-to-one relations, and verify they output in DD how we want. Just so all model relations are handled consistently and how we want.
Anyways, after discussing this further, it sounds like we're leaning on two options:
-
Easier Option - Add another optional kwarg to the dd functions. When provided, will first verify that the provided object is a Django query, and then do some additional logic to ensure nicer output, using the kwarg values.
-
More Complicated Option - Implement with some sort of JS/AJAX calls. So the relation will display in the original DD output, but the actual data will not persist to the page until the user clicks to expand the given attribute. At which point some sort of JS will trigger to pull whatever the value is, and then render the result to the page.
Option 1 is much easier to implement, but much less dynamic. In that it requires the user to know what relations they care about in advance. If they don't know, then they need to load the initial dd page, figure out what they want to see, then modify the initial call and reload the dd page for the new data.
Option 2 will probably have lower upfront cost for page rendering, and is very dynamic in that the user can have no idea what they're expecting to see, and yet they can still get to the data they ultimately want. But it will take significantly more work to implement, and we're not sure we want to invest that amount of extra time into this package.
These two options are not mutually exclusive and we can potentially do both if we want.
from django-dump-die.
Related Issues (20)
- Some (all?) "simple type" objects should output type for clarity HOT 1
- In some instances, return value of object functions should be displayed by default
- Object functions with automatic-return-value-output should be customizable
- Outputting function as root dd/dump object does not behave consistently HOT 2
- To be thorough, make sure there is handling for every database-type returned by Django HOT 1
- Class function output should probably show if method is static
- Make the use of deepcopy keep the unique intact for subsequent dumps. HOT 1
- Error when dd-ing a function HOT 5
- Error when dd-ing models.FileField attribute HOT 4
- CSS Stylings possibly break when used with Bootstrap/AdminLTE HOT 3
- DD of PosixPath objects seem to be very nested and provide mediocre output HOT 3
- Handling of dd/dump outside of request-serving logic HOT 2
- Dictionary may prevent expansion of elements that should be expandable HOT 1
- Handle OrderedDict data type HOT 1
- Enum display possibly broken in Python 3.11 HOT 2
- Add template tags to be able to dump objects from a template. HOT 1
- Ctrl+Click with multiple open root elements does not behave as expected HOT 3
- Types Decimal and Date should output useful information
- Filename and LineNo should output for each parent/root object output HOT 1
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 django-dump-die.