Django:向查询集添加任意附加数据

时间:2015-04-28 21:06:56

标签: django django-models

我正在尝试根据搜索显示我的数据地图。处理地图显示的最简单方法是序列化搜索生成的查询集,实际上这可以正常使用。但是,我真的希望允许多次搜索,显示的点以用户选择的颜色显示。用户选择的颜色显然不能来自数据库,因为它不是这些对象的属性,因此这里没有任何聚合器有意义。

我试过简单地创建一个实用程序类,因为我真正需要的是两个模型类之间的某种复杂连接,然后将其序列化为geojson。但是,一旦我创建了该实用程序类,很明显我失去了使用查询集的许多好处,特别是使用django-geojson轻松序列化数据的能力(或者本身一旦我可以获得1.8以便顺利运行)。

基本上,我希望能够做到这样的事情:

  

querySet = datumClass.objects.filter(...用户提交的搜索参数...)。annotate(color =' blue')

这有可能吗?看起来这会更优雅,并且比我当前的非模型实用程序类的解决方案更好,当我尝试使用python-geojson进行序列化时,它会有一些严重的序列化问题。

3 个答案:

答案 0 :(得分:0)

如果您有一个将字段映射到值的字典,则可以执行

之类的操作
filter_dictionary = {
    'date__lte' : '2014-03-01'
}
qs = DatumClass.objects.filter(**filter_dictionary)

并且qs的所有日期都会小于该日期(如果它有date字段)。因此,作为用户,我可以提交您可以放在字典中的任何键值对。

答案 1 :(得分:0)

不太确定您要实现的目标,但您可以在对象中添加额外的属性,迭代查询集中的。这些可以从模板访问。

for object in queryset :
    if object.contition = 'a'
        object.color = 'blue'
    else:
        object.color = 'green'

答案 2 :(得分:0)

问题在于额外附带了关于有用性或弃用的各种警告......但是这样做有效:

var lib = new MyLib(Response.Output);
lib.DoSomething();


public string TellMeSomething()
{
  return "Hello World";
}

注意包装字符串值的双引号。

这转换为:

public string TellMeSomething()
{
  return "Hello World";
}