私はかなり普通のモデルを持っています:
class Nonce(models.Model):
key = models.CharField(_('key'), max_length=36, primary_key=True, blank=False)
token = models.ForeignKey('Token')
date_created = models.DateTimeField(_('date created'), blank=False, default='1970-01-01 00:00:00')
date_consumed = models.DateTimeField(_('date consumed'), blank=True, null=True)
created_by = models.IPAddressField(_('IP address'), blank=False, default='0.0.0.0')
consumed_by = models.ForeignKey('MyUser', blank=True, null=True, on_delete=models.SET_NULL)
def __unicode__(self):
return self.key
これらの非常に多くのものが作成され、実際に「消費」(使用) されるこれらの一部のみを保持する必要があります。また、モデルからは明らかではありませんが、これらは 1 時間で期限切れになります。
したがって、古い nonce の束で DB を混乱させず、アプリケーションが期限切れのナンスを定期的に (頻繁に) 削除する作業を省くために、それらが消費されるまで RAM に保存するのが最善だと考えました (もしあれば)。 )。
だから、私は自分のコードをフォークして、save(commit=False) で作成されたオブジェクトを save() し、オブジェクトを RAM (Memcached) に保存するコードを置き換えるだけだと思いました。後で特定のナンスが消費された場合は、save() を適切に実行します。それ以外の場合、オブジェクトは期限切れになり、Memcache を介してパージされます。
残念ながら、save() got an unexpected keyword argument 'commit'
nonce.save(commit=False) 行で Django からエラーが発生しています。なんで?
Django 1.4.5 と Python 2.7.2 を使用しています。