Django数据库和信息历史

时间:2013-11-18 19:04:06

标签: python database django web django-models

我正在使用Django框架来构建一个能够记录用户信息及其修改历史的网站。正如我可以想象的那样,我可以使用Django自定义应用程序来记录信息历史记录。这个自定义应用程序将包含存储在字典中的信息类。

    Class Information(models.Model):
        user = models.OneToOneField(User)

        info = {'date': value}

    def create_information(sender, instance, created, **kwargs):
    if created:
        Information.objects.create(user=instance)
    post_save.connect(create_control_information, sender=User)

有没有人能告诉我是否还有其他更好的方法可以在Django网站开发中记录信息?

1 个答案:

答案 0 :(得分:1)

首先,因为您需要直接从用户实例访问用户的历史记录,请使用django的ForeignKey字段。

执行此操作时,访问用户历史记录将如下所示:

my_user.information_set.all()

您可以通过在ForeignKey构造函数中指定related_name参数,将用户的历史名称从'information_set'更改为例如'history',如下所示:

Class Information(models.Model):
     ...
     user=models.ForeignKey(related_name='history')

现在要访问用户的历史记录,您可以写:

my_user.history.all()

另外,请注意,在您当前的设计中,信息不会存储在数据库中。 我假设您要存储的大多数历史数据将具有相同的结构。考虑为您希望保留在历史记录中的每条信息使用字段。例如,要保留操作的日期和时间,请使用DateTimeField