W Django Forms, w jaki sposób określić wartość domyślną dla pola, jeśli użytkownik pozostawi puste pole? Początkowa ustawia wartość początkową, ale użytkownik może ją usunąć.Formularze Django: wartość domyślna, jeśli użytkownik opuszcza pole puste
Odpowiedz
Jeśli używasz ModelForm
wystarczy wykonać porady Dana.
Jeśli jednak po prostu używasz Form
, być może będziesz musiał określić sposób postępowania z walidacją. Example Documentation
class YourForm(forms.Form):
...
def clean_field(self):
data = self.cleaned_data['field']
if not data:
data = 'default value'
return data
'def clean_field (self): return self.cleaned_data ['field'] lub 'default value''' –
Set a default value in the model.
class YourModel(models.Model):
this_field = models.TextField(default="default_value")
Próbowałem forms.CharField (domyślnie = "0") i otrzymałem komunikat o błędzie: "__init __() otrzymało nieoczekiwany argument słowa kluczowego" default "" – user984003
Dodaj go do rzeczywistego modelu, a nie do formularza. Twój model będzie w 'models.py'. W ten sposób za każdym razem, gdy zapiszesz kopię modelu - w twoim przykładzie za pośrednictwem formularza - domyślna wartość zostanie dodana do tego modelu, jeśli pozostanie pusta. Myślę, że jest to lepsze rozwiązanie niż poprzez walidację w terenie, zwłaszcza jeśli zamierzasz zezwolić na korzystanie z Admin. –
Ah, rozumiem, co masz na myśli. Tak, to działałoby, z tym, że moja forma i model nie pasują do siebie. Pola formularza są wszystkie wiersze w tej samej kolumnie. – user984003
myślę, że należy ustawić wartość domyślną w modelu – daveoncode
można rozwiązać w dziedzinie walidacji metody (clean_fieldname). https://docs.djangoproject.com/en/dev/ref/forms/validation/ – PepperoniPizza
Dzięki, clean_fieldname wydaje się być do zrobienia. Miałem nadzieję, że istnieje sposób, aby to określić, kiedy zdefiniowałem pole, ale chyba nie. – user984003