2015-08-20 14 views
6

kaybeder, bize bu çok basit bir model var diyelim mikrosaniye var. Belirli bir model örneğini Django yöneticisinden düzenlemeye çalışırsam, timestamp alanının veritabanına geri kaydedildiğinde mikro saniye çözünürlüğünü kaybedeceğini fark ettim.Tasarruf modeli örneği Django 1.8 olarak mikrosaniye çözünürlüğü

Çoğu uygulama bu seviyede bir doğruluk düzeyine ihtiyaç duymaz, ancak bunu gerektiren uygulamalar için, bu çözünürlük kaybının tüm olası nedenlerini ortadan kaldırabilmemiz güzel olurdu. Bunu önlemek için bilinen bir yol/özellik var mı, yoksa bu bir hata/sınırlama mı?

+2

hangi db kullanıyorsunuz? – svfat

+0

@Alasdair - evet, bu benim sonumdan bir yazım hatasıydı. Benim kötü ve teşekkürler! @svfat - PostgreSQL. Ayrıca, MySQL'in microsecond çözünürlüğünü desteklemediğinin farkındayım, ancak buradaki sorun, model örneğini Django Admin'ten güncellediğinizde 'timestamp 'alanının mikro saniye çözünürlüğünü kaybetmesidir. –

+1

Bir kenara göre, Django 1.8 ve MySQL 5.6.4+, microseconds'ı destekliyor ([sürüm notları] (https://docs.djangoproject.com/en/1.8/releases/1.8/#database-backends)) – Alasdair

cevap

5

Sorun, varsayılan yönetici küçük aracının mikrosaniye desteklememesidir. Bunun yerine formfield_overrides ile widget'ı DateTimeInput kullanın ve mikrosaniye içeren bir biçim belirtin. Bir zaman damgası olduğundan Senin durumunda

from django.contrib import admin 
from django.db import models 
from django import forms 

from .models import Log 

class LogAdmin(admin.ModelAdmin): 

    formfield_overrides = { 
     models.DateTimeField: {'widget': forms.DateTimeInput(format='%Y-%m-%d %H:%M:%S.%f')}, 
    } 

admin.site.register(Log, LogAdmin) 

, başka bir seçenek hiç de değiştirilemez, böylece readonly_fields için alan eklemek eklemektir.

+0

Orijinal parçacığı korumak ve aynı zamanda mikro saniye çözünürlüğünü korumak için güzel olurdu. 'Readonly_fields' ile ilgili olarak, diğer tuhaf kullanım durumları gerektiğinde düzenleme yeteneğini gerektirebilir. Her neyse, önerileriniz için teşekkürler! –

+0

Yöneticinin tarih saat widget'ının kodunu girmeyi deneyebilirsiniz, ancak mikro saniye içerecek şekilde özelleştirmenin ne kadar kolay olacağını bilmiyorum. – Alasdair