Próbuję utworzyć połączone pole liczb całkowitychz rozwijanym polem, aby zebrać okres od użytkownika. Stamtąd chciałbym zapisać go w tabeli w czytelnym formacie dla maszyny, np. 12 W, z tego mogę podzielić obiekt i dodać 12 tygodni do dzisiejszej daty i wypełnić pole Termin.
Na przykład
[12][Days]
[weeks]
[Months]
Czy byłby to widżet klienta? czy jest lepszy sposób na jego zakończenie?
Odpowiedzi:
1 dla odpowiedzi № 1Jeśli potrzebujesz tylko formularza, możesz użyć 2 pól formularza, z których oba są już obecne w Django, i ich domyślnych widżetów.
IntegerField (formularze) + ChoiceField (formularze) z wybory coś jak [[0, "Days"],[1, "Weeks"],[2, "Months"],]
Wyglądałoby to tak:
class MyForm(forms.Form):
amount = forms.IntegerField(label="Your name")
units = forms.ChoiceField(choices=[[0, "Days"],[1, "Weeks"],[2, "Months"],])
Jeśli chcesz, aby model przechowywał te 2 wartości osobno, możesz użyć (IntegerField (modele) i niektóre pola z twoimi preferencjami wybory). Następnie użyj ModelForm, więc nie musisz już definiować żadnych pól w formularzu.
Jeśli chcesz jeszcze bardziej formatować maszynowo niż 2 osobne wartości ... Sprawdź, czy baza danych może przechowywać przedziały i rozważ użycie DurationField. Stracisz jednak możliwość automatycznego tworzenia zgrabnej formy za pomocą 2 widżetów.