代码之家  ›  专栏  ›  技术社区  ›  Red Cricket

如何按内容类型名称查询Django日志条目?

  •  1
  • Red Cricket  · 技术社区  · 8 年前

    我想按content\u type.name查询Django admin的日志记录。

    from django.contrib.admin.models import LogEntry
    logs = LogEntry.objects.filter(content_type__name='foo')
    

    但这会导致错误跟踪:

    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "/opt/sf/sf/env/lib/python2.7/site-packages/django/db/models/manager.py", line 85, in manager_method
        return getattr(self.get_queryset(), name)(*args, **kwargs)
      File "/opt/sf/sf/env/lib/python2.7/site-packages/django/db/models/query.py", line 781, in filter
        return self._filter_or_exclude(False, *args, **kwargs)
      File "/opt/sf/sf/env/lib/python2.7/site-packages/django/db/models/query.py", line 799, in _filter_or_exclude
        clone.query.add_q(Q(*args, **kwargs))
      File "/opt/sf/sf/env/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1260, in add_q
        clause, _ = self._add_q(q_object, self.used_aliases)
      File "/opt/sf/sf/env/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1286, in _add_q
        allow_joins=allow_joins, split_subq=split_subq,
      File "/opt/sf/sf/env/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1211, in build_filter
        raise FieldError('Related Field got invalid lookup: {}'.format(lookups[0]))
    FieldError: Related Field got invalid lookup: name
    

    我能做到。。。

    logs = LogEntry.objects.filter(content_type=102)
    logs.all()[0].content_type.name
    u'foo'
    

    ... 那么,如何获取所有具有名称的内容类型对象呢 foo ?

    1 回复  |  直到 8 年前
        1
  •  3
  •   yrekkehs    8 年前

    ContentType由三列组成:id(整数)、app\u label(char)和model(char)

    在这种情况下,你可能想要

    LogEntry.objects.filter(content_type__model='foo')