2013-02-06 15 views
7

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

+0

myślę, że należy ustawić wartość domyślną w modelu – daveoncode

+0

można rozwiązać w dziedzinie walidacji metody (clean_fieldname). https://docs.djangoproject.com/en/dev/ref/forms/validation/ – PepperoniPizza

+0

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

Odpowiedz

6

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 
+0

'def clean_field (self): return self.cleaned_data ['field'] lub 'default value''' –

4

Set a default value in the model.

class YourModel(models.Model): 
    this_field = models.TextField(default="default_value") 
+0

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

+0

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. –

+0

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

Powiązane problemy