Ich habe ein Modell, das die Anzeigeeinstellungen des Benutzers darstellt. Fast alle diese Präferenzen sind boolesche Werte. Statt 50 booleschen Spalten, gibt es einen besseren Weg, dies zu tun? Wenn ich in Zukunft ein neues Objekt hinzufügen möchte, muss ich keine neue Spalte in meiner Datenbank hinzufügen.Wie lassen sich viele Boolesche Werte in einem Django-Modell am besten darstellen?
Antwort
"Wenn ich in Zukunft ein neues Element hinzufügen möchte, muss ich keine neue Spalte in meiner Datenbank hinzufügen."
In diesem Fall sollten Sie eine Zeile hinzufügen.
Sie haben eine Tabelle mit der Domäne möglicher Einstellungsnamen. 50 Zeilen.
Sie haben eine Tabelle der tatsächlichen Einstellungen. Benutzer, Einstellungsname, Einstellungswert.
Wenn Sie so viele Boolesche Werte haben und mehr hinzufügen möchten, sollten Sie keine Spalten, sondern Einträge verwenden.
Dann, wenn Sie suchen müssen "User will E-Mails", nur nach UserPrefs.objects.get suchen (Benutzer = Benutzer, Preference = Preferences.objects.get (Name = "will E-Mail")).
User_Table:
- Benutzer
- Benutzername
- etc
Preferences_Table:
- Name
- Beschreibung
- etc
UserPreferences_Table:
- Benutzer (FK_User)
- Preference (FK_Preferences)
- Einstellung (Boolean)
auf Ihrem Setup Je, können Sie sein kann das Setting-Feld in der UserPreferences-Tabelle weglassen und einfach das Vorhandensein eines en verwenden versuchen Sie für diesen Benutzer/Präferenz als ein Wahres und das Fehlen von einem als Falsch.
Sie könnten auch eine Bitmap verwenden. Sie benötigen nur ein einzelnes Char-Feld in Ihrer Datenbank. Irgendwo in Ihrer App speichern Sie eine Liste von Einstellungen, pref1, pref2, pref3 ... und im Bitmap-Feld speichern Sie eine Folge von 1 und 0, die den Einstellungen entsprechen.
Zum Beispiel bedeutet 101 pref1 = yes, pref2 = no, und pref3 = yes und 011 bedeutet pref1 = no, pref2 = yes und pref3 = yes.
Sie könnten dies wiederverwendbar machen, indem Sie einen neuen Modellfeldtyp für Bitmaps erstellen.
- 1. Wie lässt sich ein Baum am besten mit XML darstellen?
- 2. Wie kann man mehrere boolesche Werte über SQL am besten summieren?
- 3. Boolesche vs Tinyint (1) für boolesche Werte in MySQL
- 4. Wie lassen sich Amazon Web Service Usage Reports am besten anpassen und anzeigen?
- 5. 2 ähnliche iOS-Apps - wie lassen sich diese am besten verwalten?
- 6. Wie können Sie sich am besten mit ColdFusion abmelden?
- 7. Wie lassen sich Microsoft Office- und PDF-Dokumente am besten analysieren?
- 8. Wie lassen sich Aktualisierungen einer E-Commerce-Website am besten verwalten?
- 9. Welche Datenstruktur eignet sich am besten für verschachtelte Werte und Anzahl der Werte?
- 10. Java: Alternierende Boolesche Werte in einem Array
- 11. Wie verschlüsseln Sie viele große Bilder am besten?
- 12. Wie lässt sich am besten eine Webseitenminiatur erstellen?
- 13. Wie kann man ein Video mit abgerundeten Ecken in Silverlight am besten darstellen?
- 14. Bei der Portierung von Java-Code nach ObjC, wie kann man überprüfte Ausnahmen am besten darstellen?
- 15. Wie zeichne skinable "Knöpfe" am besten in einem Videospiel?
- 16. Wie lässt sich eine C# -Klasse am besten gestalten?
- 17. Vergleiche boolesche WHERE-Prädikate gegen boolesche Werte
- 18. Welcher SchemaTyp in Mongoose eignet sich am besten für Timestamp?
- 19. JavaScript Boolesche Werte hinzufügen
- 20. Ints in boolesche Werte konvertieren
- 21. Wie am besten einzurichten core.clj
- 22. Wie können Baumkonflikte in Git am besten behandelt werden?
- 23. Rails Datenbank Boolesche Werte
- 24. Welche Java-Sammlung eignet sich am besten für dieses Szenario
- 25. JSON und boolesche Werte
- 26. Objective c Boolesche Werte
- 27. Boolesche Variablen und Checkboxen mit drei Zuständen: Wie kann man die Konvertierung am besten durchführen?
- 28. Wie finde ich am besten in r?
- 29. Wie am besten Eingabe in Java Webapp
- 30. Wie geht das am besten in Android?
Mit "am besten" scheinst du "am meisten erweiterbar" zu meinen. –