Używam BooleanField w django. Domyślnie generowany przez niego checkbox jest stanem niezaznaczonym, chcę aby stan był domyślnie zaznaczony, jak to zrobić?
107
Jeśli używasz tylko formularza waniliowego (a nie ModelForm), możesz ustawić wartość początkową pola ( https://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.Field. początkowe ) jak
class MyForm(forms.Form):
my_field = forms.BooleanField(initial=True)
Jeśli używasz ModelForm, możesz ustawić domyślną wartość w polu modelu ( https://docs.djangoproject.com/en/2.2/ref/models/fields/#default ), która zostanie zastosowana do wynikowego ModelForm , lubić
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Na koniec, jeśli chcesz dynamicznie wybierać w czasie wykonywania, czy twoje pole będzie domyślnie zaznaczone, czy nie, możesz użyć początkowego parametru do formularza podczas jego inicjalizacji :
form = MyForm(initial={'my_field':True})
form = MyForm(initial={'my_field':True})
, nie znalazłem tego od razu w dokumentacji.źródło
initial
(dla niezwiązanego formularza), ale niedefault
Używam django == 1.11. Odpowiedź, która uzyskała najwięcej głosów, jest w rzeczywistości błędna. Sprawdzając dokument z django, mówi:
A jeśli zagłębisz się w kod procesu walidacji formularza, zobaczysz, że dla każdego pola formularz będzie wywoływał swoje widżety,
value_from_datadict
aby uzyskać rzeczywistą wartość, więc jest to miejsce, w którym możemy wstrzyknąć domyślną wartość.Aby to zrobić
BooleanField
, możemy dziedziczyć poCheckboxInput
, przesłonić domyślnevalue_from_datadict
iinit
funkcję.Następnie użyj tego widżetu podczas tworzenia
BooleanField
.źródło
Django 3.0
też. Dzięki.W DJango 3.0 domyślna wartość BooleanField w model.py jest ustawiona w następujący sposób:
źródło