2011-09-15 21 views
0

请参阅my previous question。我根据Kevin P的回答更新了代码,但现在我无法将最新的标签排在最前面。我的意见如下query.order("date")。你知道为什么带有减号的日期有效,但没有减号不起作用吗?按日期排序时的PropertyError(Google App Engine - Python)

我的模式是:

class Owner(db.Model): 
    owner = db.UserProperty() 
    owner_tag = db.StringProperty() 
    tag_value = db.IntegerProperty() 
    url = db.StringProperty()  

处理程序,提请标签表:

class UserAdminPage(webapp.RequestHandler): 
    def get(self): 
     order_by = self.request.get("order")  
... 

#-----------tags table-----------------# 
      query = Owner.all() 
      query.filter("owner =", user) 
      if not order_by: 
       query.order("owner_tag") 
#-----------when both "date" has a minus sign the table is sorted correctly 
#-----------when I remove the minus signs I get `PropertyError: Invalid property name 'date'` 
      elif order_by == "-date": 
       query.order("-date") 
      w = query.fetch(500) 

      user_tag_list = [] 
      for item in w: 
       user_tag_list.append(item.owner_tag) 

#   unique_tags = sorted(f1.f2(user_tag_list))     
      unique_tags = f1.f2(user_tag_list) 

#-----------holding table start--------# 
      self.response.out.write(""" 
      <table border="0" cellpadding="0" cellspacing="20" > 
      <tr> 
      <td>""") 

#-----------tags table start--------#         
      self.response.out.write("""<table border="1"> 
      <tr> 
      <th colspan="3">tags<br /> 
      <a href="/useradminpage?order=date"><span id=small>most recent</span></a></th> 
      </tr> 
      """)  

      for tag in unique_tags: 

       self.response.out.write(""" 
        <tr> 
        <td><a href="/tag?tag=%s">%s</a></td> 
        </tr> 
        """ % 
        (tag, tag) 
        ) 

      self.response.out.write("""</table>""") 

... 

回答

3

现在你所依赖的事实,通常按键顺序生成,这是情况并非总是如此。添加日期属性到您的模型:

date= db.DateTimeProperty(auto_now_add=True) 

也修复您的GET参数,以便它是一致的。在这里:

<a href="/useradminpage?order=xyz"><span id=small>most recent</span></a> 

这里:

elif order_by == "xyz": 
    query.order("date") 
+0

太好了!谢谢。现在所有的作品。 – Zeynel

+0

很高兴帮助:) –