首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有可能在ModelAdmin中添加按用户的LogEntry过滤的Django模型?

在Django中,可以通过定制ModelAdmin来添加按用户的LogEntry过滤的功能。LogEntry记录了Django admin中对模型的所有操作,包括添加、修改和删除等。

要实现按用户的LogEntry过滤功能,可以按以下步骤操作:

  1. 导入必要的模块和类:
代码语言:txt
复制
from django.contrib import admin
from django.contrib.admin.models import LogEntry
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
  1. 创建一个自定义的ModelAdmin类,并继承自原始的ModelAdmin类:
代码语言:txt
复制
class CustomModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        # 获取当前用户的LogEntry集合
        user_log_entries = LogEntry.objects.filter(user=request.user)

        # 获取所有用户执行过的操作的对象类型ID
        content_type_ids = user_log_entries.values_list('content_type_id', flat=True).distinct()

        # 获取所有用户执行过的操作的模型类型
        model_types = ContentType.objects.filter(id__in=content_type_ids)

        # 返回按用户过滤的查询集
        return self.model.objects.filter(content_type__in=model_types)
  1. 注册模型并指定使用自定义的ModelAdmin类:
代码语言:txt
复制
admin.site.register(YourModel, CustomModelAdmin)

以上代码会根据当前登录用户的LogEntry记录来过滤显示在admin页面上的模型对象。该功能可以方便地查看和管理特定用户的操作记录。

请注意,以上代码仅实现了按用户的LogEntry过滤的功能,如果需要使用其他的过滤条件或功能,可以根据实际需求进行扩展。

腾讯云相关产品:在此功能中,暂无特定腾讯云产品推荐。

希望以上答案能够满足您的需求,如有其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券