在模型清理方法中检查外键 - Django 1.7.7 vs 1.8

时间:2015-04-17 01:19:23

标签: django

我在一个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)}

有什么想法吗?

0 个答案:

没有答案