假设有一行代码可以使用包含非常长的“查找名称”的django ORM执行查询:

QuerySet.filter(myfk__child__onetoone__another__manytomany__relation__monster__relationship__mycustomlookup=':P')

我想打破这条线跟随pep8,特别是79 characters limit
我知道我们可以做如下的事情:
   QuerySet.filter(
      **{
        'myfk__child__onetoone__another'
        '__manytomany__relation__monster'
        '__relationship__mycustomlookup': ':P'
      }
    )

但我想知道是否还有其他的,也许更多的蟒蛇/接受的方式?

最佳答案

也许使用LOOKUP_SEP来加入查找名称会更容易一些?

from django.db.models.constants import LOOKUP_SEP

lookup = LOOKUP_SEP.join(['myfk', 'child', 'onetoone', 'another', 'manytomany',
                          'relation', 'monster', 'relationship',
                          'mycustomlookup'])

QuerySet.filter(**{lookup:':P'})

09-13 12:50