更新appengine模型实例的值

时间:2012-07-08 11:41:46

标签: python google-app-engine

我有以下模型定义:

class Logs(DictModel):
    song = db.ReferenceProperty(Song)
    singer = db.ReferenceProperty(Singer)
    download_count = db.IntegerProperty(default=0)
    dt = db.DateTimeProperty()

我想要更新每天下载歌曲的次数。因此,一旦用户点击下载按钮,我就会向视图发布帖子请求,以下是我的处理方式,如下所示:

基本逻辑:如果存在任何下载日志,对于特定日期的歌曲,将计数递增1并更新该值,除非计数不存在,请创建新对象并将其放入数据库。

     def post(self):
        sid = int(self.request.POST["sid"])
        Sng = db.get(db.Key.from_path('Song', sid))
            try:
                dlogs = Logs.all().filter("dt = ",datetime.date.today()).filter("song =", Sng).get()
                dlogs[0].download_count += 1
            except Exception as e:
                logging.info(e)
                dlogs = HourLogs(song = Sng,
                             singer = Singer,
                             download_count = 1,
                             dt = datetime.date.today())
            dlogs.put()  
            self.response.out.write(desc)

一切顺利,如果它转到除了blosk,但是当已经存在一个日志实体时,在更新该实体的任务中我得到以下错误:

AttributeError: "'list' object has no attribute 'put'"

请假设使用的所有变量都是万无一失的。我测试了它们。该块位于def post(self)块内。

我缺少什么?

0 个答案:

没有答案