2013-02-06 28 views
7

Trên biểu mẫu Django, làm cách nào để chỉ định giá trị mặc định cho trường nếu người dùng để trống trường? Ban đầu đặt giá trị ban đầu nhưng người dùng có thể xóa giá trị này.Biểu mẫu Django: giá trị mặc định nếu người dùng để trống trường

+0

Tôi nghĩ bạn nên đặt một giá trị mặc định trong mô hình – daveoncode

+0

Bạn có thể đối phó với trong xác nhận lĩnh vực phương pháp (clean_fieldname). https://docs.djangoproject.com/en/dev/ref/forms/validation/ – PepperoniPizza

+0

Cảm ơn, clean_fieldname dường như là cách để đi. Đã hy vọng có một cách để xác định nó khi tôi xác định lĩnh vực này, nhưng tôi đoán là không. – user984003

Trả lời

6

Nếu bạn đang sử dụng một ModelForm chỉ cần làm theo lời khuyên của Dan.

Nếu bạn chỉ đơn giản sử dụng số Form thì bạn có thể phải chỉ định cách xử lý xác thực. 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): trả về self.cleaned_data ['field'] hoặc 'default value'' –

4

Set a default value in the model.

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

Tôi đã thử các biểu mẫu.CharField (mặc định = "0") và nhận được thông báo lỗi: "__init __() nhận được đối số từ khóa không mong muốn 'mặc định'" – user984003

+0

Thêm nó vào mô hình thực tế, không có trong biểu mẫu. Mô hình của bạn sẽ có trong 'models.py'. Bằng cách này bất cứ khi nào bạn lưu một bản sao của mô hình - trong ví dụ của bạn thông qua biểu mẫu của bạn - giá trị mặc định sẽ được thêm vào mô hình đó nếu nó được để trống. Tôi nghĩ rằng đây là một giải pháp tốt hơn thông qua xác nhận trường đặc biệt là nếu bạn sẽ cho phép sử dụng Admin. –

+0

Ah, tôi hiểu ý của bạn là gì. Có, điều đó sẽ hoạt động ngoại trừ hình thức và mô hình của tôi không hoàn toàn phù hợp. Các trường biểu mẫu là tất cả các hàng trong cùng một cột. – user984003

Các vấn đề liên quan