2012-08-16 65 views
2

從本質上講,似乎我的數據是從數據庫中提取的,但我收到地址而不是字符串本身。我想從數據庫中得到的是一個3個朋友的個人資料頁面列表(stringproperties)。從For循環接收內存地址

這是我的DB類:

class Friends(db.Model): 
    name = db.StringProperty(required = True) 
    friend = db.StringProperty() 
    added_date = db.DateTimeProperty(auto_now_add = True) 

我的資料處理程序:

class Profile(MainHandler): 
    def get(self, profile_id): 
     if self.user and profile_id: 
      current_user = self.user.name 
      name1 = '' 
      friend_name = '' 
      team_imagee = '' 
      key = '' 
      imgs = db.GqlQuery("select * from Profile_Images WHERE name =:1", profile_id) 
      team_name = db.GqlQuery("select * from Teams WHERE name =:1", profile_id) 
      team_images = db.GqlQuery("select * from Teamimg WHERE user =:1", profile_id) 
      friends = db.GqlQuery("select * from Friends WHERE name =:1 order by added_date desc limit 10", profile_id) 
      for clan in team_name: 
        name1 = clan.team_name_anycase 
      for image in team_images: 
       team_imagee = image.key() 
      for img in imgs: 
       key = img.key() 
      self.render('profile.html', profile_id = profile_id, current_user = current_user, friends = friends, team_img = team_imagee, team_name = name1, profile_image = key, username = self.user.name, email = self.user.email, firstname = self.user.first_name, last_name = self.user.last_name, country = self.user.country) 
     else: 
      self.redirect('/register') 

而在我的模板循環:

{% for friend in friends %} 
    {{friend}} 
    <br> 
{% endfor %} 

是否有人會告訴我爲什麼我有時會看到這些地址而不是對象本身(即使只是一般)。

+2

下面的兩個答案都是正確的,如果您正在迭代整個實體,您希望顯示什麼?你想要的是訪問該對象的屬性,我猜... – aschmid00 2012-08-16 21:23:42

回答

3

在您的觀點中,您將返回db.GqlQuery("..")查詢對象,該查詢對象爲iterator,而您實際上正在打印查詢返回的每個實體的默認對象字符串表示形式。

我想你應該有遍歷並訪問friend屬性是這樣的:

{% for friend_tmp in friends %} 
    {{friend_tmp.friend}} 
    <br> 
{% endfor %} 
4

您尚未爲Friend類定義任何類型的默認表示形式。因此,Python將使用默認對象__repr__方法,通常顯示內存位置。

在模型上定義一個__unicode__方法,該方法返回您實際想要顯示的字符串 - 它可能非常簡單,如return self.name

2

如果你使用NDB,再版(朋友)會更有益。

+2

是的,我一直在喝酒從文檔的海洋數據。最終我會繞過來精簡我的應用程序。哦,順便說一句,這是一種榮幸。我感到需要感謝您在comp sci行業所做的一切。乾杯! – suitegamer 2012-08-18 00:09:29