要保存与相关模型相关的活动记录,你可以使用Django的信号机制来实现。下面是一个示例代码:
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
class ModelA(models.Model):
name = models.CharField(max_length=100)
class ModelB(models.Model):
name = models.CharField(max_length=100)
model_a = models.ForeignKey(ModelA, on_delete=models.CASCADE)
class ActivityLog(models.Model):
activity = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
@receiver(post_save, sender=ModelB)
def save_activity_log(sender, instance, created, **kwargs):
if created:
activity = f"ModelB object '{instance.name}' created and related to ModelA object '{instance.model_a.name}'"
else:
activity = f"ModelB object '{instance.name}' updated"
ActivityLog.objects.create(activity=activity)
在上面的示例中,我们定义了两个模型ModelA和ModelB,ModelB有一个外键关联到ModelA。然后,我们创建了一个ActivityLog模型来保存活动记录。
然后,我们使用@receiver装饰器来将save_activity_log函数与post_save信号连接起来。这意味着每当ModelB对象保存(创建或更新)时,save_activity_log函数都会被调用。
在save_activity_log函数中,我们检查created参数来判断是创建还是更新操作。然后,我们根据情况创建不同的活动记录,并保存到ActivityLog模型中。
这样,每当创建或更新ModelB对象时,相关的活动记录就会被保存下来。你可以根据自己的需求来扩展和定制活动记录的内容。