我有一个很正常的模型:
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混乱我的数据库并且为应用程序提供定期(经常)删除过期的数据库的工作,我认为最好将它们存储在RAM中直到它们被消耗(如果有的话)。
所以,我已经分叉了我的代码,我想我只是替换我保存()使用save(commit = False)创建的对象的代码,然后将对象存储到RAM(Memcached)中。稍后如果消耗了一个特定的随机数,我将正确地保存(),否则,该对象将过期并通过Memcache清除。
不幸的是,我从Django的nonce.save(commit = False)行收到错误:save() got an unexpected keyword argument 'commit'
。为什么呢?
我正在使用Django 1.4.5和Python 2.7.2。
答案 0 :(得分:8)
Django的Model
类没有这样定义save
方法。那是ModelForm
的。普通Model
的{{1}}方法的方法签名是这样的:
save
你必须尝试另一种方法。
This is the dev's doc用于模型的def save(self, force_insert=False, force_update=False, using=None):
方法和this one is the version 1.4's
希望这有帮助!