我在一个clean()方法中有一些代码可以在Django 1.7.7上运行,但在1.8中停止工作
场景
class Span(models.Model):
happening = models.ForeignKey('Happening', blank = True, null = True)
soul_class = models.ForeignKey('SoulClass', blank = True, null = True)
在clean()
课程的Span
方法中,我的检查如下
if self.happening:
foo
if self.soul_class:
bar
这在Django中运行良好,达到1.7.7但是当我升级到Django 1.8时,self.happening 和 self.soul_class都是None。
主要区别似乎是_soul_class_cache
的值如下:
1.7.7 中的Span对象看起来像
{'end_date': None,
'id': None,
'_state': `<`django.db.models.base.ModelState object at 0x7ff046ac1320`>`,
'start_date': datetime.date(2015, 4, 16),
'soul_class_id': None,
'end_time': datetime.time(14, 12),
'happening_id': None,
'_happening_cache': None,
'start_time': datetime.time(14, 12),
'_soul_class_cache': `<`SoulClass: Chi Kung`>` # <-- Here
}
在 1.8
中{'start_time': datetime.time(14, 0),
'end_date': None,
'soul_class_id': None,
'_state': `<`django.db.models.base.ModelState object at 0x7f88d698d2e8`>`,
'happening_id': None,
'_happening_cache': None,
'_soul_class_cache': None, # <-- Here
'end_time': datetime.time(15, 0),
'id': None,
'start_date': datetime.date(2015, 4, 16)}
有什么想法吗?