小编jat*_*jit的帖子

通过queryset查找链

我有两个模型:City和它的别名 CityAlias.该CityAlias模型包含其中的所有名称City以及别名.我想要的是,无论何时City搜索name,CityAlias都应该查询模型.这就是我想出来的:

class CityQuerySet(models.QuerySet):
    """ If City is searched by name, search it in CityAlias """
    def _search_name_in_alias(self, args, kwargs):
        for q in args:
            if not isinstance(q, models.Q): continue
            for i, child in enumerate(q.children):
                # q.children is a list of tuples of queries:
                # [('name__iexact', 'calcutta'), ('state__icontains', 'bengal')]
                if child[0].startswith('name'):
                    q.children[i] = ('aliases__%s' % child[0], child[1])

        for filter_name in kwargs:
            if filter_name.startswith('name'):
                kwargs['aliases__%s' % …
Run Code Online (Sandbox Code Playgroud)

python django django-models

9
推荐指数
1
解决办法
235
查看次数

Optparse和很多,如果没有

我正在开发一个接收一些参数的程序,并且想要使它们中的一些成为必需,但我正在介入一些问题:

  1. 我真的需要使代码Python 2.4.x兼容,所以我(至少认为)只能使用optparse
  2. 想避免代码模糊

这是我做的:

def usage():
    parser = OptionParser()
    parser.add_option('-i', '--item', dest='item')
    parser.add_option('-m', '--monitor', dest='monitor')
    parser.add_option('-s', '--service', dest='service')
    parser.add_option('-u', '--status', dest='status')
    parser.add_option('-a', '--match', dest='match')
    parser.add_option('-v', '--value', dest='value')
    parser.add_option('-o', '--hostname', dest='hostname', default='')
    parser.add_option('-t', '--test', action='store_true', dest='test')
    parser.add_option('-U', '--url', dest='URL', default='')
    parser.add_option('--verbose', action='store_true', dest='verbose')

    (options, args) = parser.parse_args()

    if not options.item or not options.monitor or not options.service or \
                           not options.status or not options.match or \
                           not options.value:
        parser.print_help()
        sys.exit(-1)

    return options
Run Code Online (Sandbox Code Playgroud)

我想这没关系,但我真的不认为这是Pythonic.有没有更好的方法来进行这种条件检查?

干杯,

python optparse

1
推荐指数
1
解决办法
73
查看次数

标签 统计

python ×2

django ×1

django-models ×1

optparse ×1