datamade / how-to

📚 Doing all sorts of things, the DataMade way
MIT License
86 stars 12 forks source link

Model-mapping tool #117

Closed fgomez828 closed 10 months ago

fgomez828 commented 3 years ago

Background

Several of our long-standing projects, including django-councilmatic and its instances, have complex model relationships. This makes it exceptionally tricky to onboard contributors and requires contributors to spend a significant amount of time re-orienting themselves to model relationships.

It would be helpful to have a Django plugin or some other tool that would allow us to create a diagram based off of the existing tables in a database. Tools like dbeaver do the mapping piece of this, but having a Django tool might be preferable if it is easier to use.

Proposal

Main question to answer: Are there any tools that would allow us to quickly and easily visualize model relationships based on existing database tables?

Tasks:

Deliverables

Artifacts will include:

Timeline

I believe this would take one or two full investment days. This would include time to do some preliminary research (3 hours), identify 2-3 tools to try (1 hour), try out 2-3 tools (5 hours), and write up a recommendation for one of the tools (2 hours) (estimated total: 11 hours).

This may take more or less time if there is a dearth of information about model-mapping tools or if one or more of the tools take much more or less time than expected to try out.

beamalsky commented 3 years ago

I think this is a great idea !!

hancush commented 2 years ago

A lot of good suggestions here: https://stackoverflow.com/a/6777376

I tried django-extensions with pyparsing/ pydot over in Metro Councilmatic. The resulting diagram is still a bit of a mess, but it does represent an improvement over DBeaver, and I think it could suit our needs for less complicated apps. (OCD is just hypernormalized, making it a unique challenge.)

my_project_visualized

smcalilly commented 10 months ago

gonna close for now, please feel free to reopen this if anybody is interested.