2014-03-28 52 views
1

我正在写一个Django application用户可以保存“搜索”。如何在Django中获取与用户关联的所有相关对象?

class Searches(models.Model): 
     user = models.ForeignKey(User) 
     .... 

     def get_searches(self): 
      try: 
       search_list=Searches.objects.get(user) 
      except: 
       return [] 
      else: 
       return search_list. 

因此,当一个用户已经登录, 我认为,

@login_required 
def display_search_list(request): 
    user=request.user 
    search_list=user.get_searches() 
    return render(request,"display.html",{'obj_list':search_list}) 

我的问题是关于get_searches(self) method予如上所定义。 如何通过“当前登录的用户”来获得search_list。 我所感兴趣的全部是user.get_searches()应该为User返回所有saved searches。 如何让这项工作?

感谢

回答

1

尝试:

@login_required 
def display_search_list(request): 
    user=request.user 
    search_list=Searches.objects.filter(user_id=user.id) 
    return render(request,"display.html",{'obj_list':search_list}) 

如果你需要有Searches类中的方法,我觉得您的签名应该是:

def get_searches(self, id): 

但是,你需要创建一个对象来称呼它。我只是在视图中建立列表。

它确实打破了MVC。 :)我相信使用get()方法是获取一行,以获得更多的比,你应该用filter()

+0

谢谢,我会看看它现在是如何工作的。我有另一个问题,张贴在这里,你可以帮助这里:http://stackoverflow.com/questions/22720984/how-to-attach-multiple-modeladmins-to-useradmin-in-django –

+0

这真的没有必要。 Django仅为此提供了模型后台引用。 –

2

你有一个ForeignKey到User模型Searches。因此,您已经将任何用户对象反向引用到与此用户在该模型中相关的所有搜索。对于已登录的用户,您可以拨打request.user.searches_set.all(),它将返回全部已保存的登录用户搜索。不知道你为什么写这个方法。阅读更多在docs

相关问题