2016-03-31 26 views
0

私のDjangoサイトでは、ユーザーの反応を保存しているので、ユーザーがボタンをクリックすると、作成された時間として保存され、ユーザーが2回目にクリックすると、終了時刻等々。ここは私のモデルです。時間差を保存するDjango

class UserStatus(models.Model): 
    STATUS_TYPES = (
     ('online', 'online'), 
     ('offline', 'offline')  
    ) 

    user = models.ForeignKey(User) 
    status_type = models.CharField(max_length=30, choices=STATUS_TYPES, default='online') 
    created_time = models.DateTimeField(auto_now_add=True) 
    finish_time = models.DateTimeField(blank=True, null=True) 
    time_diff = models.DateTimeField(blank=True, null=True) 

created_timeとfinish時間の時間差を示すtime_diffを追加しました。シェルで例を試してみると、私は使用します。私はそれがエラーを与えたuser_status.save()を書いたとき

user_status.created_time 
datetime.datetime(2016, 3, 31, 12, 50, 21, tzinfo=<UTC>) 
user_status.finish_time 
datetime.datetime(2016, 3, 31, 12, 51, 37, 998593, tzinfo=<UTC>) 
user_status.finish_time - user_status.created_time 
datetime.timedelta(0, 76, 998593) 

すべてがしかし、今までは罰金のようです。

line 93, in parse_datetime match = datetime_re.match(value) TypeError: expected string or buffer

なぜこのようなエラーが発生したのか分かりませんでした。

ありがとうございます。

答えて

1

これで、DateTimeFieldを使用しようとしましたが、このフィールドは日付と時刻の格納にのみ使用できます(ただし時差はありません)。 timedeltaの保存にはDurationFieldを使用する必要があります。

+0

私の問題を解決していただきありがとうございます。実際には私は "DurationField"を知らなかった:)とそれがパーサーの問題か何かがこのように思った:) – waterkinq