【问题标题】:Django database and information historyDjango 数据库和信息历史
【发布时间】:2013-11-18 19:04:05
【问题描述】:

我正在使用 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 web 开发中是否有其他更好的方法来记录信息?

【问题讨论】:

    标签: python database django web django-models


    【解决方案1】:

    首先,因为您希望直接从 User 实例访问用户的历史记录,所以请使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多