2012-07-05 23 views
38

Tôi đang cố gắng triển khai trang web danh sách việc cần làm để thực hành sử dụng Django. Trong models.py, tôi có một lớp được gọi là Item để đại diện cho một mục công việc cần làm. Trong đó, tôi có dòng sau:Làm thế nào để tùy chọn DateTimeField của Django?

due_date = models.DateTimeField(required=False) 

do_date có nghĩa là trường tùy chọn trong trường hợp người dùng có thời hạn cho một số mục cần làm. Vấn đề là dòng ở trên mang lại cho tôi một TypeError do đối số từ khóa không mong muốn 'bắt buộc'.

Vì vậy, có vẻ như tôi không thể sử dụng đối số từ khóa 'bắt buộc' cho DateTimeField. Có cách nào tôi có thể thực hiện một tùy chọn DateTimeField? Hoặc là có một thực hiện tiêu chuẩn cho vấn đề tôi đang có?

+4

'bắt buộc' chỉ dành cho các trường * biểu mẫu *. Các trường mẫu sử dụng 'blank = True', phải được kết hợp với' null = True' cho 'DateTimeField' để cho phép một giá trị NULL được lưu trữ cho cột trong cơ sở dữ liệu. Nếu không, bạn sẽ nhận được 'IntegrityError'. –

Trả lời

63

"bắt buộc" là đối số hợp lệ cho biểu mẫu Django. Đối với các mô hình, bạn muốn từ khóa args blank=True (dành cho quản trị viên) và null=True (đối với cơ sở dữ liệu).

+1

Ah, vì vậy tôi đã nhận được các hình thức và mô hình hỗn hợp. Rất tiếc. –

+1

Cảm ơn bạn đã giải thích sự khác biệt giữa 'required',' blank' và 'null'. – aero

+0

IIRC 'blank = True, null = True' không được khuyến khích cho trường văn bản bởi vì sau đó bạn có thể có hai" nulls ":' '' 'và' NULL', nhưng điều đó không áp dụng cho trường được nhập ngày? –

21

Sử dụng due_date = models.DateTimeField(null=True, blank=True)

Kiểm tra Field Options để biết thêm thông tin.

+0

Chúng ta có cần phải thêm 'required = False' nữa không, hoặc hai thứ này có đủ không? Bất kỳ sự khác biệt nào nếu chúng ta thêm vào hay không? – jeff

+1

@halilpazarlama Bạn không cần 'required = False' trong trường mô hình của bạn và tôi thậm chí không phải là đối số từ khóa hợp lệ trong định nghĩa trường mô hình. 'required = *' có thể được sử dụng trong các trường biểu mẫu và bạn vẫn sẽ không cần nếu bạn đã có 'blank = True' trong định nghĩa trường mô hình của bạn. – machaku

+0

Ồ. Tôi nên đọc các câu trả lời khác kỹ lưỡng hơn. Cảm ơn mặc dù :) – jeff

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