Django Forms:在导入期间避免DB命中

时间:2014-11-13 08:04:45

标签: python django django-forms lazy-loading

我有这个传统的django代码:

class FooForm(forms.Form):
    defaults={
        'foo': Foo.objects.get(id='...') 
        }

Foo.objects.get()并不懒惰。这意味着在导入python文件期间DB会连接。

这在几个地方都会造成麻烦。

如何重构这个?是否有Foo.objects.get()的懒惰版本?

1 个答案:

答案 0 :(得分:0)

听起来你想在实例化表单时点击数据库。我通常通过覆盖构造函数来做到这一点:

class FooForm(forms.Form):
    def __init__(*args, **kwargs):
        super(FooForm, self).__init__(*args, **kwargs)

        self.defaults = {
            'foo': Foo.objects.get(id='...') 
        }