在Django中搜索两个模型

时间:2012-11-02 15:22:57

标签: python django templates gis

我事先道歉这个问题太宽泛了,但我需要一些帮助概念化。

最终结果是我想启用基于半径的搜索。我正在使用Django。为此,我有两个类:Users和Places。 Users类内部是一个定义人们想要搜索的半径的函数。在Places类中,我有一个函数定义中点,如果有人进入城市和州而不是拉链(即,如果有人进入纽约,纽约,许多邮政编码与之相关联,所以我需要找到中点)。

我把这两部分放下了。所以现在我有一个半径,人们想要搜索,我知道(估计)的地方。现在,我将这两者结合起来遇到了很大的困难,甚至想到如何做到这一点。

我试图在视图中相互搜索,但是当我在模板中循环一个模型但是试图根据另一个模型的if语句显示结果时遇到了很多麻烦。

似乎自定义模板标签可以解决该问题,但我想确保我首先正确地概念化问题。即,

  • 我是否想根据模板中的if语句进行显示?

  • 或者我应该在模型文件中基于其他两个类创建另一个类?

  • 或者我应该为模型文件中的一个类创建一个新列?

我想我的最终问题是,基于我想做什么(启用基于半径的搜索),大部分工作应该在哪里/如何完成?如果问题过于宽泛,我再次道歉。

3 个答案:

答案 0 :(得分:1)

也许您可以将其放在呈现搜索页面的视图中。

asuuming你有一个像search这样的视图功能你可以:

  1. 获取用户半径request.user.get_radius

  2. 根据该半径relevant_places = Places.get_all_places_in_radius

  3. 搜索地点
  4. 将这些地方渲染给用户

答案 1 :(得分:0)

根据您的描述,我相信GeoDjango值得您花时间研究:http://geodjango.org/

特别是如果你想要启用基于半径的搜索,大部分繁重的工作已经由GeoDjango完成,你只需花一些时间学习如何使用它(这只是你需要的一小部分时间)不得不花“重新发明轮子”,可以这么说)

答案 2 :(得分:0)

我刚决定将该功能添加到视图中,以便在用户输入后可以将信息直接输入到模型中。谢谢您的帮助。我可能最终会看到geodjango。