2015-04-09 28 views
18

Django 1.8 hiện có một số phát hiện sự cố đối với các kiểu máy, điều này rất hay. Tuy nhiên, đối với một cảnh báo rằng nó cho tôi, tôi hiểu vấn đề, nhưng tôi không hiểu làm thế nào gợi ý rằng nó cho tôi là tốt hơn."Giá trị mặc định cố định được cung cấp" sau khi nâng cấp lên Django 1.8

Đây là (xấu) mô hình lĩnh vực của tôi:

my_date = DateField(default=datetime.now()) 

và thật dễ dàng để xem lý do tại sao đó là xấu. Nhưng đây là gợi ý cho tôi:

MyMoel.my_date: (fields.W161) Cố định giá trị mặc định được cung cấp.
        GỢI Ý: Có vẻ như bạn thiết lập một ngày/giờ/datetime giá trị cố định như mặc định cho lĩnh vực này. Điều này có thể không phải là những gì bạn muốn. Nếu bạn muốn có ngày hiện tại như mặc định, sử dụng `django.utils.timezone.now`

Vì vậy, nó nói để sử dụng timezone.now, nhưng làm thế nào là bất kỳ tốt hơn so với datetime.now? Họ cả giá trị "mặc định cố định" ... timezone.now chỉ lợi nhuận một trường datetime, đó là một giá trị cố định ...

Tôi nghi ngờ rằng nó thực sự muốn tôi để chèn một số loại cờ mà nói "sử dụng timezone.nowsau". Nhưng đó không phải là những gì gợi ý nói ... vậy lá cờ đó là gì?

Trả lời

48

Chức năng datetime.now() hiện được thực thi ngay khi mã của bạn được nhập, tức là khi bạn (lại) khởi động máy chủ của mình. Tất cả các phiên bản mô hình tiếp theo sẽ có cùng giá trị.

Thay vào đó, bạn nên chuyển một hàm có thể gọi đến default, được thực thi mỗi khi một cá thể mẫu cần giá trị mặc định. Gợi ý muốn truyền đạt rằng bạn nên sử dụng theo nghĩa đen là DateField(default=django.utils.timezone.now) mà không có dấu ngoặc đơn.

Thông báo hơi gây nhầm lẫn, nhưng Django không biết bạn có sử dụng datetime.now() hoặc django.utils.timezone.now() hay không.

+0

Vì vậy, cho phép bất kỳ cuộc gọi nào cũng có thể làm cho trình xác thực hợp lệ (tức là tôi có thể chuyển nó hoặc 'datetime.now' hoặc' timezone.now', hoặc bất kỳ thứ gì là hàm trả về ngày)? – Troy

+0

Có, bất kỳ người trong số họ nên làm cho người xác nhận (và cuối cùng, bạn) hạnh phúc. – knbk

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