【问题标题】:Can't get count for app engine model with many to many relationship无法计算具有多对多关系的应用引擎模型
【发布时间】:2014-01-11 06:06:40
【问题描述】:

我想获取单个用户的事件计数。

我的模型:

class User(db.Model):
    name = db.StringProperty(required = True)
    pw_hash = db.StringProperty(required = True)
    email = db.StringProperty(required = True)

class PlaceModel(db.Model):
    place_name = db.StringProperty(required = True)
    place_lat = db.StringProperty(required = True)
    place_long = db.StringProperty(required = True)
    def render(self):
        return render_str("placemodel.html", p = self)

class EventModel(db.Model):
    event_place = db.ReferenceProperty(PlaceModel)
    event_people = db.ReferenceProperty(User)

    event_name = db.StringProperty(required = True)
    event_time = db.StringProperty(required = True)
    def render(self):
        return render_str("eventmodel.html", e = self)

蟒蛇:

class MainPage(Handler): #render all userevents
    def get(self):
        email = self.session.get('foo')
        user = User.all().filter("email", email).get()
        userevents = EventModel.all().filter("event_people =", user).get()
        self.render("mainpage.html", userevents = userevents)

html:

{%if userevents.count() == 0%}
    <div>no events for now</div>
{% else %}
    {% for event in userevents %}
        {{event.event_name}}
        {{event.event_time}}
    {% endfor %}
{% endif %}

当我运行它时,我收到一条错误消息,指出 EventModel 对象没有属性计数。如何计算与用户匹配的 EventModel 实例的数量?

【问题讨论】:

  • 对Jinja不是很了解,但是如果它像Django的模板,那么你需要删除()并留下userevents.count

标签: python html google-app-engine jinja2


【解决方案1】:

只需使用userevents.count 即可获取用户事件的计数。

【讨论】:

  • jinja 需要 ()。如果我删除它,我会得到“'EventModel' 对象不可迭代”
【解决方案2】:

通过在EventModel.all() 查询的末尾使用.get(),您已经通过获取第一个值解决了查询。这意味着userevents 不是带有count() 方法的查询,而是一个实际的单个EventModel 实例。删除.get()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多