2017-09-07 7 views
0

私はPeeWeeでテストを行いますが、大きな問題があります。 例:このコードでpythonとpeeweeと同じデフォルト値

from uuid import uuid4 
import datetime as dt 
import time 
from peewee import * 

dbfile = 'test.db' 
db = SqliteDatabase(dbfile) 

class BaseModel(Model): 
    class Meta: 
     database = db 

class Example(BaseModel): 
    uuid = CharField(default=str(uuid4())) 
    date = DateTimeField(default=dt.datetime.now()) 

try: 
    Example.create_table() 
except: 
    pass 
e1 = Example.create() 
time.sleep(1) 
e2 = Example.create() 
print(e1.uuid, e2.uuid) #Same uuid... 
print(e1.date, e2.date) #Same date 

、UUIDと日付が同じであり、それは正常ではないのです。 これを新しい作成ごとに異なる値にする理由と方法を教えてください。

は、問題は、あなたがUUIDと日付フィールドのデフォルト値を定義する方法であるあなたに

答えて

2

ありがとうございます。 Exampleクラスの定義時に、uuidのデフォルト宣言では、uuid4関数を実行してその値をデフォルト値として割り当てています。同じことがdt.datetime.nowです。それを実行し、返された時刻をデフォルト値として割り当てます。

class Example(BaseModel): 
    uuid = CharField(default=uuid4) 
    date = DateTimeField(default=dt.datetime.now) 

次の変更は、問題を修正します

関連する問題