Django在查询中打破了长查找名称

tri*_*het 14 python django pep8 django-models django-orm

让我们假设有一行代码使用包含很长"查找名称"的Django ORM来执行查询:

QuerySet.filter(myfk__child__onetoone__another__manytomany__relation__monster__relationship__mycustomlookup=':P')
Run Code Online (Sandbox Code Playgroud)

我想打破行跟随pep8,特别是79个字符的限制

我知道我们可以这样做:

   QuerySet.filter(
      **{
        'myfk__child__onetoone__another' 
        '__manytomany__relation__monster' 
        '__relationship__mycustomlookup': ':P'
      }
    )
Run Code Online (Sandbox Code Playgroud)

但我想知道是否还有另一种,也许更多的pythonic /接受的方式?

din*_*ltz 9

也许使用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'})
Run Code Online (Sandbox Code Playgroud)