Hi Mikkel,

When facing this type of situation, I tend to use one of these two options, 
depending on the number of model classes:


  *   if the number of classes is reasonable, I use a single app, but implement 
the models in a model package, distributing the classes into modules inside 
this package so that each one is reasonable in size and packs together closely 
related classes. Same for the views BTW.
  *   if this would not be enough, I break the global app into smaller ones, 
trying to map the "business domains" of the application. The guideline here is 
that the dependencies between domains should be kept as reduced as possible. A 
side effect of this approach is that it can happen that some of the apps are 
generic enough to be reusable in other Django projects.


I don't pretend that this is the "official" way to proceed. Maybe there are 
smarter way to do.


Best regards


Eric PASCUAL

Centre Scientifique et Technique du Bâtiment
290 route des Lucioles - BP 209
06904 SOPHIA ANTIPOLIS CEDEX
http://www.cstb.fr<http://www.cstb.fr/>

________________________________
From: django-users@googlegroups.com <django-users@googlegroups.com> on behalf 
of Mikkel Kromann <mik...@aabenhuskromann.dk>
Sent: Saturday, April 14, 2018 3:52:38 PM
To: Django users
Subject: Advice needed: One big model or many apps with highly interlinked data 
tables?

Hi.

I'm new to Django, and I'm working my way into Django by going through the nice 
Djangoproject.com turorial.
I'm trying to find out whether Django is the right tool for my task, which is 
maybe a bit unusual for Django.

My task is to build a web interface to a database for an calculation tool made 
in Python.
The database will contain maybe up to 100.000 pieces of data (mostly decimal 
fields), and the tool will import this data, do some calculations and write 
some results back to the database.

My Django web interface should allow the user to view, add, delete and edit the 
data in the database, and view the results with tables and charts.
The data is organised in various chunks:

- "Sets" which lend themselves very nicely to Django models, i.e. 
HouseholdType, Item, City, Month, Year
- "Maps", which are user defined ManyToOne or ManyToMany relations between the 
various sets (can probably be worked into the "sets" models)
- "Data Tables", which contains the main load of data, having the "sets" as 
foreign keys (e.g. "Demand" for each HouseholdType, Item, City, Month and year)
- "Results tables", calculated by the tool but in structure quite similar to 
the "Data tables"

I will have roughly 10 sets, 10 maps. 20-30 data tables and 10-20 result tables.
I understand that putting all these into a one app will create biiig models.py 
and views.py files, which is probably a bad idea.

On the other hand, splitting the sets, maps and tables into several apps does 
not seem to be an ideal solution either.
All the tables and the maps will be models that have foreign keys to the "sets" 
models.
My understanding so far is, that it is also bad to have a lot of interlinkage 
between the various apps.

An intermediate solution might be, that if I make a "Sets" app containing all 
the models that are going to be primary key in the other apps, then the 
interlinkages between the apps is somewhat simplified.

Any thoughts or advice?


cheers, Mikkel



--
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
django-users+unsubscr...@googlegroups.com<mailto:django-users+unsubscr...@googlegroups.com>.
To post to this group, send email to 
django-users@googlegroups.com<mailto:django-users@googlegroups.com>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/7b0f436c-4bef-4c1f-b513-e18b820fb570%40googlegroups.com<https://groups.google.com/d/msgid/django-users/7b0f436c-4bef-4c1f-b513-e18b820fb570%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/DB7P193MB0331DEFE1ECAFCE751BE57FD8CB70%40DB7P193MB0331.EURP193.PROD.OUTLOOK.COM.
For more options, visit https://groups.google.com/d/optout.

Reply via email to