拜托,我发送了最后几天与db和django战斗。
我的问题是:我有数据库500 Mb大...在db中没有任何many_to_many,foreing等因此表格不是彼此独立的。在django中,我使用了inspectdb创建了模型。我的问题是,一旦我调用runserver,我必须等待大约5分钟才能启动服务器。我已经尝试使用python -vv manage.py runserver进行调试,以了解服务器卡在哪里,并且总是在尝试连接数据库时。
我尝试过与MySQL,PostgreSQL,MSSQL相同的数据库结构,但所有数据库都表现相同。还有不同的机器和不同的django版本。
一旦我创建了没有数据的数据库转储,只有db结构这么大的db wat大约16Kb,而Django服务器的启动速度很快(毫秒)。
我使用django版本1.9.5,但也试过1.8
请提出每一个提示,实际上我在想法的最后搜索问题。
谢谢
答案 0 :(得分:0)
因此,经过几天调试并询问IRC后,我有理由说runserver(以及几乎每个manage.py命令)需要很长时间。 Django似乎不检查views.py中的SQL查询,其中我有大多数SQL查询。但是我在forms.py中有两个简单的查询,用于填写表单中的下拉列表,这会导致整个问题。
所以现在我知道问题在哪里,但我在想如何解决它。 事情是我需要我的模型中的数据。
我的表单看起来:
def get_vendor_set():
"""
Returns set of contributors to use as choices
"""
vendor_set = [
('Availability', 'Availability'),
('No Competitor', 'No Competitor'),
('Popularity', 'Popularity'),
]
contrib = CompetitorLastPrice.objects.order_by('vendor')
for con in contrib:
vendor_set.append((con.vendor,con.vendor))
return sorted(set(vendor_set))
def get_sorg_set():
"""
Return set of sorg to use as choices
"""
sorg_set = []
sorg_cursor = CltSorg.objects.all()
for sorg in sorg_cursor:
sorg_set.append((sorg.sorg, sorg.sorg +' - '+ sorg.sorg_description))
return sorg_set
class FamilyForm(forms.ModelForm):
class Meta:
model = Family
fields = ['name', 'family_number', 'price_list', 'sorg', 'filter', 'linearity']
widgets = {
'sorg': forms.Select(choices=get_sorg_set()),
}
class CustomInlineFormset(BaseInlineFormSet):
"""
Custom formset that support initial data
"""
...
...
ContribFormSet = inlineformset_factory(Family, Templates, formset=CustomInlineFormset,
fields='__all__', min_num=1, extra=0,
widgets={'contributor' : forms.Select(choices=get_vendor_set())}
)
问题导致那些小部件...... 有没有其他方法如何在forms.py之外的某个地方获取数据到初始表单(到选择列表)...我想以某种方式在views.py中进行。
感谢您的回答。
诉P>