(opts)
| 69 | |
| 70 | |
| 71 | def get_field_names_from_opts(opts): |
| 72 | if opts is None: |
| 73 | return set() |
| 74 | return set( |
| 75 | chain.from_iterable( |
| 76 | (f.name, f.attname) if f.concrete else (f.name,) for f in opts.get_fields() |
| 77 | ) |
| 78 | ) |
| 79 | |
| 80 | |
| 81 | def get_paths_from_expression(expr): |