[django]如何在 search_fields 中包含外键字段

我们知道在 admin.py 中定义 search_fields 可以控制在后台管理界面中能够搜索的字段。

但是,当 search_fields 包含外键字段时,此时进行搜索会报错:

TypeError at /admin/hello/foo/

Related Field has invalid lookup: icontains

解决的办法是修改 search_fields 中的外键字段名称。

将 search_fields 中的外键字段改为 foreign_key__related_fieldname 这种形式就可以了。 这种用法适用于 ForeignKey 及 ManyToManyField 。

models.py

class Hello(models.Model):
    name = models.CharField(max_length=100)

    #...


class Foo(models.Model):
    hello ...
more ...

[django]合并多个查询结果集(queryset)并按字段排序

需求

合并博文的喜爱及转发信息,并按时间排序。

相关 models :

class Post(models.Model):
    #...

    created_at = models.DateTimeField(auto_now_add=True)
    reblog_from = models.ForeignKey('self', null=True, blank=True)

    #...


class Like(models.Model):
    #...

    post = models.ForeignKey(Post)
    created_at = models.DateTimeField(auto_now_add=True)

    #...

解决方案

from itertools import chain
from operator import attrgetter

#...

post = Post.objects.get(pk=post_id ...
more ...

[python]在 zope2 中获取当前时间及格式化输出

可以使用 Zope2 内置的 DateTime() 获取当前时间。

Script(Python)

新建 Script(Python) 文件:

return DateTime()

结果:

2013/03/18 12:38:22.825950 GMT-4

格式输出:

return DateTime().strftime('%Y-%m-%d %H:%M:%S') 结果:

2013/03/18 12:38

DTML

新建 DTML 文件:

<dtml-var expr="DateTime()" fmt="%Y/%m ...
more ...

[python]zope2 文件下载及导出为 csv 文件

本文将简单实现 zope2 导出数据库数据为 csv 文件并提供下载链接。

先建一个 Z SQL Method,ID 为 query_sql,内容就是查询所有结果的 sql 语句 :

select * from user

再建一个 Script (Python) ID 为 hello_py, 内容是调用上面定义的 Z SQL Method,并将结果转换为逗号分隔的 cvs 格式,下面将详细说明:

request = container.REQUEST
response =  request.response

query_result = context.query_sql()  # 获取数据库查询结果
dics = query_result.dictionaries()  # 将查询结果转换为一个字典

# 输出查询结果包含的字段名称,也就是 ...
more ...

[python]解决 zope2 后台编辑器中文编码问题

默认情况下 zope2 的后台编辑器不能正常显示中文:

<title>&#24050;&#25552;&#20132;&#21464;&#26356;</title>

在 manage 后台稍作修改后就可以正常保存中文了:

<title>已提交变更</title>

修改步骤:

在zope的根目录的propertyies页下面,增加如下特性:management_page_set: utf-8。

alt

参考

more ...