Django datetime (varsayılan=datetime.sorunları(şimdi)
Böyle db model var:
from datetime import datetime
class TermPayment(models.Model):
# cut out some fields, non relevant to the question
date = models.DateTimeField(default=datetime.now(), blank=True)
Ve yeni bir örnek ekleniyor:
tp = TermPayment.objects.create(**kwargs)
Bir sorun daha var: tarih alanında aynı değere sahip veritabanı tüm kayıtları - ilk ödeme tarihi. Sunucu yeniden başlatıldıktan sonra bir plak var, yeni bir tarih ve diğerleri ile aynı. Bazı veri cache gibi kullanılır ama nerede bulamıyorum.
veritabanı: mysql 5.1.25
django v1.1.1
CEVAP
datetime.now()
model tanımlandığında değerlendiriliyor gibi görünüyor, ve her zaman bir kayıt eklemek.
Django zaten yapmak için çalışıyoruz ne yapmak için bir özelliği vardır:
date = models.DateTimeField(auto_now_add=True, blank=True)
ya
date = models.DateTimeField(default=datetime.now, blank=True)
Şu anda ne ikinci örnek arasındaki farkı parantez eksikliğidir. Parantez olmadan datetime.now
ileterek, bir kayıt eklenir her zaman adıyla anılacak olan gerçek işlevi geçirmeden. Eğer datetime.now()
, o zaman geçirirseniz sadece işlevini değerlendirmek ve dönüş değeri geçirmeden.
Django mevcuttur daha fazla bilgi model field reference
DateTime DateTime Özelliği varsayılan ...
C eşdeğer'#; ler DateTime.Java şim...
NOW() Set datetime veri türü için Vars...
Çevre.Vs DateTime TickCount.Şimdi...
Birim Testi: DateTime.Şimdi...