擅长:python、mysql、java
<p>因此,让我在使用<code>django-simple-history</code>时中断外键关系</p>
<p>所以<code>HistoricalChild</code>无法获得<code>HistoricalParent</code>的外键</p>
<pre><code>HistoricalChild = apps.get_model('app', 'HistoricalChild')
HistoricalChild.objects.filter(parent_ptr_id=invoice.parent_history.id).order_by('-history_date')
</code></pre>
<p>将返回这么多的项目,这对我来说是非常无用的,因为父母有它的状态从某个日期,但孩子是从未来</p>
<p>这意味着我不能在某个时间点通过引用它的历史父代来重建一个完整的子代。。你知道吗</p>
<p>我最终使用<code>historical_date</code>从特定时间重新创建了一个<code>Child</code>实例,如下所示</p>
<pre><code>parent_dict = apps.get_model('order', 'HistoricalParent').objects.filter(history_date__lte=invoice.created_date).order_by('-history_date').values().first()
child_dict = apps.get_model('app', 'HistoricalChild').objects.filter(history_date__lte=invoice.created_date).order_by('-history_date').values().first()
child_dict.update(parent_dict)
for field in ['history_change_reason', 'history_id', 'history_type', 'history_date', 'history_user_id']:
child_dict.pop(field)
child_from_the_past = Child(**child_dict)
</code></pre>