2011-04-17 52 views
0

试图request.POST数据绑定到窗体时,我得到的约20 -30秒无法解释延迟:延迟绑定request.POST数据时,形成在Django

CompanyFormset = modelformset_factory(Company, form=EditCompanyForm, extra=0) 

    if request.method == 'POST': 
     formset = CompanyFormset(request.POST) 
     if formset.is_valid(): 
      formset.save() 

它只是发生在一个服务器,无论我使用的是开发服务器还是mod_wsgi。当在我的开发计算机上尝试时,一切工作都很快。如果我尝试通过手动赋值来保存模型,它应该是很快的。

延迟只发生在这条线:

formset = CompanyFormset(request.POST) 

..和我没有更多的想法是什么导致它或在何处寻找问题的原因。

有什么建议该怎么办?

这里是模型过于:

class Company(models.Model): 
name = models.CharField(_('name'),blank=True, max_length=200) 
type_of_corporation = models.CharField(_('type of organization'),blank=True, max_length=100) 
tax_number = models.CharField(_('tax number'),blank=True, max_length=100) 
created_at = models.DateTimeField(auto_now_add = True) 
updated_at = models.DateTimeField(auto_now = True) 
logo = models.FileField(_('logo'),upload_to='bex/logos', blank=True, null=True) 
description = models.TextField(_('description'),blank=True) 
street = models.CharField(_('street'),blank=True, max_length=100) 
city = models.CharField(_('city'),blank=True, max_length=100) 
zip = models.CharField(_('zip'),blank=True, max_length=50) 
region = models.CharField(_('region'),blank=True, max_length=100) 
COUNTRIES = (
    ('Croatia', 'Croatia'), 
    ('Slovenia', 'Slovenia'), 
) 
country = models.CharField(_('country'),max_length=20, choices=COUNTRIES) 
telephone = models.CharField(_('telephone'),blank=True, max_length=20) 
fax = models.CharField(_('fax'),blank=True, max_length=20) 
email = models.EmailField(_('email'),blank=True) 
website = models.URLField(_('website'),null=True, blank=True, verify_exists=False) 
representing_person = models.CharField(_('representing person'), blank=True, max_length=100) 
owner = models.ForeignKey(User, blank=True, null=True, verbose_name=_('owner'), related_name='company_owner') 
owner_approved = models.BooleanField(blank=True) 
company_approved = models.BooleanField(default=True) 
business_category = models.ForeignKey(BusinessCategory, blank=True, null=True, verbose_name=_('business category')) 
subscription_date = models.DateTimeField(_('subscription date'),blank=True, null=True) 
score = models.IntegerField(null=True, blank=True) 
votes = models.IntegerField(null=True, blank=True) 

""" company data needs to have ratings, comments, category and business tags """ 

class Admin: 
    list_display = ('',) 
    search_fields = ('',) 
    save_as = True 

class Meta: 
    verbose_name = _('Company') 
    verbose_name_plural = _('Companies') 


def rating_allowed(self): 

    if not self.subscription_date: 
     try: 
      user = User.objects.get(id=self.owner.id) 
      if (datetime.today() - user.date_joined).days < 30: 
       rating_allowed = True 
     except: 
      rating_allowed = False 
    else: 
     if (datetime.today() - self.subscription_date).days < 365: 
      rating_allowed = True 
     else: 
      rating_allowed = False 
    self.rating_allowed = rating_allowed 
    return self.rating_allowed 

def get_absolute_url(self): 
    return "/companies/%i/" % self.id 

def __unicode__(self): 
    return self.name 
+0

发布公司模型也请 – 2011-04-17 10:16:56

+0

在这里,添加到上面的帖子。 – tmilovan 2011-04-17 11:23:45

回答

1

一切看起来都还好模型。您可以尝试优秀的django debug toolbar报告时间,并可能帮助您确定需要这么长时间。

+0

尝试过它,并尝试与pdb。查询在我的开发笔记本电脑和服务器上花费相同的时间。当与pdb一步一步地在我上面提到的线路上停顿时,所有东西都会冻结20到30秒,然后继续。如果我手动将值通过pdb,然后验证并保存模型,它可以快速保存。也许问题的原因是django之外,但我无法想象它会是什么。 – tmilovan 2011-04-17 15:43:30