假设我有这样的模型:
class Account(models.Model):
balance = models.IntegerField()
debt = models.IntegerField()
history = HistoricalRecords()
我使用django-simple-history来获取模型的实例,因为它在提供的日期和时间存在:
inst = Account.history.as_of(datetime.datetime.now().date)
它工作正常,但我希望得到平衡字段表示的实例,因为它在提供的日期和时间存在,然后债务字段将是该日期的最新版本。我不知道这是否可行,没有找到任何相关内容。
答案 0 :(得分:1)
历史记录ORM将根据您提交的模型返回一个模型,因为它存在于该时间点。
account = Account.objects.create(balance=1, debt=1)
account.save()
history_obj = account.history.last()
print(history_obj.debt) # returns 1
account.debt = 222
account.save()
new_history_obj = account.history.last()
print(new_history_obj.debt) # returns 222
假设您正在使用Account.history.as_of()方法返回您想要读取的历史记录对象,您可以这样做:
yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
history_obj = Account.history.as_of(yesterday)
print(history_obj.debt) # returns not the current debt, but the debt as-of yesterday
除非我误解了你希望完成的事情,否则你可以用你在问题中的内容做到这一点:
inst = Account.history.as_of(datetime.datetime.now().date)
print(inst.debt)