/ / Utwórz pole liczby całkowitej z rozwijanym polem. Django Custom Widget? - django, modele django, formularze django

Utwórz pole z liczbami całkowitymi z rozwijanym polem. Niestandardowy widget Django? - django, django-models, django-forms

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 № 1

Jeś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.