Ci sono un sacco di domande come questa, ma sono per lo più molto generalizzate, quindi mi piacerebbe avere alcune visualizzazioni sul mio uso specifico.
Generale:
Sto costruendo un nuovo progetto da solo a Django. L'attenzione sarà concentrata sulle piccole imprese. Mi piacerebbe renderlo in qualche modo personalizzabile per i miei clienti in modo che possano aggiungere al loro cliente / fattura / dipendente / qualsiasi oggetto. I miei modelli rifletteranno gli articoli di tipo standard che potrebbero avere tutti i ModelX. Ad esempio:
- nome
- cognome
- Indirizzo
- ...
Quindi il mio utente sarebbe in grado di aggiungere campi per qualsiasi dato desiderati. Sono ancora in fase di progettazione e lo sto costruendo da solo, quindi ho alcune opzioni.
Lavorando su ...
Al momento i modelli 'extra items' hanno un FK per il modello generico ( Customer
e CustomerDataPoints
per esempio). Tutti i valori nei punti dati extra sono memorizzati come char e saranno forzati / convertiti nel loro formato attuale al momento della visualizzazione. In questa build l'utente potrebbe teoricamente aggiungere i valori desiderati, raggrupparli in set e generalmente accedervi a piacimento dalle viste relavent a quel modello.
Pro: sovraccarico di archiviazione ridotto, molto estensibile, disponibile per la ricerca
Contro: più sql join
La mia altra opzione è di usare un certo tipo di markup, o l'abbinamento di valori-chiave memorizzato direttamente sui modelli di boilerplate. In pratica, questo coul è solo un XML di metereologia o stringhe letterali con metodo low-overhead. La visualizzazione e il modulo generato dai dati memorizzati assumono il controllo della convalida e la reoganizzazione degli aggiornamenti. Quindi si limiterebbe a scaricare nuovamente i dati come char / blob / qualunque.
Qualcosa come:
<datapoint type='char' value='something' required='true' />
<datapoint type='date' value='01/01/2001' required='false' />
...
Pro: Nessun join richiesto, Aggiornamenti per la convalida e le viste sono disaccoppiati dai dati
Contro: Sovraccarico di archiviazione molto più elevato, capacità limitata di cercare contenuti extra
Quindi la mia domanda è:
Se non vivessi nei vincoli imposti dalla tua azienda, quale metodo useresti? Perché? Quali sono i vantaggi o le insidie che mi vengono in mente come piccole aziende che cercano di aiutare altre piccole imprese?
Giusto per chiarire, non sto chiedendo informazioni sugli elementi dell'interfaccia utente personalizzati, su quelli che posso gestire con moduli e snippet di modello. Sto chiedendo in primo luogo l'archiviazione dei dati e il recupero di dati non standardizzati rispetto a un modello di piastra calda.