【问题标题】:Pymongo object has no attribute 'remove'Pymongo 对象没有属性“删除”
【发布时间】:2013-05-13 23:22:23
【问题描述】:

我已经从 flask-mongokit 示例中修改了 list.html 模板。

添加了名为“ck”的“复选框”和一个删除链接。

    {% extends "base.html" %}
        {% block body %}
        <h2>All Items</h2>
        <ul>
            <form id="my_form" action="delete" method=get>
            {% for task in tasks %}
            <li><input type="checkbox" name="ck" value="{{ task._id }}"><a href="{{ url_for('show_task', task_id=task._id) }}" >{{ task.title }}</a> - Created: {{ task.creation.strftime('%Y-%m-%d %H:%M') }}</li>
            {% endfor %}
        </ul>
            <a href="{{ url_for('new_task') }}">Add New Task</a> <br>
            <a href="javascript:{}" onclick="document.getElementById('my_form').submit(); return false;">Delete Selected Task</a>
            </form>
        {% endblock %}

--------------------------------

from datetime import datetime

from flask import Flask, request, render_template, redirect, url_for
from flask.ext.mongokit import MongoKit, Document
import bson

app = Flask(__name__)


class Task(Document):
    __collection__ = 'tasks'
    structure = {
        'title': unicode,
        'text': unicode,
        'creation': datetime,
    }
    required_fields = ['title', 'creation']
    default_values = {'creation': datetime.utcnow()}
    use_dot_notation = True

db = MongoKit(app)
db.register([Task])

@app.route('/delete', methods=["GET", "POST"])
def task_delete():         
    if request.method == 'GET': 

        order = request.args.getlist('ck')           

        for id in order:          
            db.Task.remove({'_id':bson.ObjectId(oid=str(id))})
        return redirect(url_for('show_all'))

以下是错误信息:

File "C:\Users\krisk\My Documents\Aptana Studio 3 Workspace\flask-mongokit\example\todo.py", line 58, in task_delete
db.Task.remove({'_id':bson.ObjectId(oid=str(id))})
File "C:\Python27\lib\site-packages\mongokit\schema_document.py", line 379, in __getattr__
return dict.__getattribute__(self, key)
**AttributeError: 'CallableTask' object has no attribute 'remove'**

我不确定为什么 Collections.Remove() 方法不起作用。

【问题讨论】:

    标签: python mongodb flask pymongo mongokit


    【解决方案1】:

    好吧,我终于想通了。我使用 mongokit delete 方法而不是集合类中的 Pymongo remove 方法。 def task_delete(): if request.method == 'GET': selected = request.args.getlist('ck') for id in selected: tasks = db.Task.find({'_id':bson.ObjectId(oid =str(id))}) 用于任务中的任务:task.delete() return redirect(url_for('show_all'))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 2018-02-21
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2022-06-14
      • 1970-01-01
      相关资源
      最近更新 更多