Chciałbym wdrożyć różne systemy pomiarowe w moim projekcie Django, aby użytkownicy mogli wybrać, czy chcą używać jednostek metrycznych lub imperialnych. Jednak nie wiem, jakie jest prawidłowe podejście do tego.Koncepcja różnych systemów pomiarowych w projekcie Django
Obecnie moje modele nie mają pól znających jednostkę miary (są polami całkowitymi/dziesiętnymi) i wolałbym, aby nie zmieniać bezpośrednio pól.
Ponieważ moje obecne wartości w bazie danych już reprezentują wartości metryczne, planuję zachować je w ten sposób, co oznacza, że będę musiał obsłużyć konwersję danych wejściowych/wartości użytkownika. Pint wydaje się być świetną biblioteką do tego celu.
Czy jest to możliwe bez edytowania pól w aplikacji, ale przy użyciu registration patterns lub czegoś innego? To, co chciałbym osiągnąć, to coś takiego:
- Definiuję strukturę danych o różnych typach pomiarów i możliwych wartościach, takich jak długość: metry, stopy; waga: kilogramy, funty itp.
- Dodaję nowy plik "measurements.py" lub coś podobnego do każdego katalogu aplikacji, który ma pola, które przechowują wartości pomiarowe. W tym polu mogę określić, które dokładnie są polami pomiaru i jakie są ich typy, takie jak pola = {mymodelfield: length, myothermodelfield: weight} itd.
- Niektóre ustawienia domyślne można ustawić w pliku ustawień i nadpisać w aplikacji plik, taki jak domyślna jednostka dla każdego pomiaru (jednostka przechowywana w bazie danych).
- Użytkownik ustawia swoje preferencje dla każdego typu pomiaru. Istnieje domyślna jednostka dla każdego typu pomiaru, jak wspomniano w poprzednim punkcie. Konieczna jest logika do konwersji danych wejściowych użytkownika w przypadku niezgodności ustawień domyślnych/domyślnych (przechowywanych). Zawieszone formularze powinny również być w stanie przekonwertować wartość pola z powrotem z domyślnej na preferowaną przez użytkownika.
Tego rodzaju rozwiązanie ułatwiłoby podłączenie go do istniejących aplikacji, ponieważ żadne pola i formularze nie zostałyby zmienione bezpośrednio w aplikacji. Podstawowe przykłady wykorzystujące wzorce rejestracji byłyby pomocne.
Wszelkie istotne informacje są mile widziane, w tym ogólne pomysły i wzorce, jak to robi się w projektach innych niż Django.
udało mi się osiągnąć konwersji jednostek z pól niestandardowych opartych na odpowiedź Dana i to [Odwołanie się] (http://tothinkornottothink.com/post/10815277049/django-forms-i- niestandardowe pola i widżety w szczegółach). –