使用Django中的信号更新记录
我创建了两个模型:使用Django中的信号更新记录,django,django-models,Django,Django Models,我创建了两个模型: 日志存储每个条目的日志 LogFeeds获取上面比较参与者、动词和日期的所有条目的计数 如何使用信号从第一个模型更新第二个模型 class Logs(models.Model): actor_content_type = models.ForeignKey(ContentType,related_name='actor') actor_object_id = models.PositiveIntegerField() actor = generic.
日志
存储每个条目的日志李>
LogFeeds
获取上面比较参与者、动词和日期的所有条目的计数class Logs(models.Model):
actor_content_type = models.ForeignKey(ContentType,related_name='actor')
actor_object_id = models.PositiveIntegerField()
actor = generic.GenericForeignKey('actor_content_type','actor_object_id')
verb = models.CharField(max_length=255)
description = models.TextField(blank=True,null=True)
target_content_type = models.ForeignKey(ContentType,related_name='target',blank=True,null=True)
target_object_id = models.PositiveIntegerField(blank=True,null=True)
target = generic.GenericForeignKey('target_content_type','target_object_id')
object_content_type = models.ForeignKey(ContentType,blank=True,null=True)
object_object_id = models.PositiveIntegerField(blank=True,null=True)
object = generic.GenericForeignKey('object_content_type','object_object_id')
timestamp = models.DateTimeField(auto_now_add=True)
public = models.BooleanField(default=True)
class LogFeeds(models.Model):
actors_content_type = models.ForeignKey(ContentType,related_name='actors')
actors_object_id = models.PositiveIntegerField()
actors = generic.GenericForeignKey('actors_content_type','actors_object_id')
verbs = models.CharField(max_length=255)
descriptions = models.TextField(blank=True,null=True)
targets_content_type = models.ForeignKey(ContentType,related_name='targets',blank=True,null=True)
targets = generic.GenericForeignKey('targets_content_type',)
objects_content_type = models.ForeignKey(ContentType,blank=True,null=True)
objects_object_id = models.PositiveIntegerField(blank=True,null=True)
objects = generic.GenericForeignKey('objects_content_type','objects_object_id')
logs = models.ManyToManyField(Logs)
我不知道你需要它做什么 如果您想在代码中记录一些内容,请查看project。您可以将其设置为处理程序,并将其与普通Django日志系统一起使用 如果你想重新发明轮子,我有一些建议: 首先,日志不需要
ManyToManyField
。我假定Log
只能有一个LogFeed
。使用ForeignKey
从Log
到LogFeeds
然后代码可能看起来像:
def log(actor, target, object):
now, today = …
feed = (LogFeed.objects.select_for_update()
.get_or_create(actor=actor,
target=target,
object=object,
date=today))
Log.objects.create(feed=feed,
verb='Something happened',
timestamp=now)
实际上,它可以在post\u save
signal发送您感兴趣的每个实例时调用
有关如何在Django中使用信号,请参见相关示例。您希望实现什么?@Krzysiek Szularz我希望将日志中的单个活动提要合并到日志提要中。比较参与者、动词和时间戳(仅日期)。并在日志提要中将其显示为一条记录。