django - 在 django 中记录用户活动?
问题描述
我有一个项目,其中一些用户可以执行 CRUD 活动。我想记录谁在什么时候做了什么。目前,我正在考虑制作模型
class UserAction(models.Model):
user_id = models.CharField(max_length=100)
action_flag = models.CharField(max_length=100)
class_id = models.CharField(max_length=100)
action_taken_at = models.DateTimeField(default=datetime.now())
并制作一个填充我的 UserAction 表的函数。有没有更好的方法来做到这一点?
解决方案
应用程序/模型.py:
from django.db import models
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey
class Action(models.Model):
sender = models.ForeignKey(User,related_name='user',on_delete=models.CASCADE)
verb = models.CharField(max_length=255)
target_ct = models.ForeignKey(ContentType, blank=True, null=True,
related_name='target_obj', on_delete=models.CASCADE)
target_id = models.PositiveIntegerField(null=True, blank=True)
target = GenericForeignKey('target_ct', 'target_id')
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('-created',)
def __str__(self):
return self.pk
应用程序/admin.py
from .models import Action
admin.site.register(Action)
你怎么能用它?
您现在可以在您的任何views.py 中导入此模型(操作)。例如,如果您有一个帖子并且用户喜欢它。您可以只写
Action.objects.create(sender=request.user,verb="likes this post",target=post)
现在当您查看您的管理员时,您会看到 tartget_id=post.pk 在这里我假设用户已通过身份验证,您可以为自己更改它。快乐编码!
推荐阅读
- lua - 我不知道如何为 lua 编写正确的表,以便为下一组语言环境传递已知信息
- django - 控制字段在 django 表单中是否唯一
- javascript - 防止用户在注销后返回上一页而不使用php禁用浏览器上的后退按钮
- c# - 在 Entity Framework Core 中将 int 数组添加到数据库
- php - 如何在 CI 中访问外部链接 html
- python - 我怎样才能避免python中的生成器
- c++ - 如何计算导入模型的顶点法线?
- android - 视图模型应该处理 onClick 吗?
- vue.js - 如何将 href 添加到 q 表(类星体数据表)?
- ios - 桥接 NSImage 和 UIImage