我正在使用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网站开发中记录信息?
答案 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