2011-11-14 28 views
1

我一直在关注实用Django项目。很不错的书,但它似乎有很多的错误。幸运的是,这个网站有一些修正:https://bitbucket.org/philgyford/practical-django-projects/src。我的最新的错误是:save() got an unexpected keyword argument 'force_insert'Django错误:save()得到了一个意外的关键字参数'force_insert'

原始代码是:

class Snippet(models.Model): 
    title = models.CharField(max_length=255) 
    language = models.ForeignKey(Language) 
    author = models.ForeignKey(User) 
    description = models.TextField() 
    description_html = models.TextField(editable=False) 
    code = models.TextField() 
    highlighted_code = models.TextField(editable=False) 
    pub_date = models.DateTimeField(editable=False) 
    updated_date = models.DateTimeField(editable=False) 
    objects = managers.SnippetManager() 
    tags = TagField() 

    class Meta: 
     ordering = ['-pub_date'] 

    def __unicode__(self): 
     return self.title 

    def save(self, force_insert=False, force_update=False): 
     if not self.id: 
      self.pub_date = datetime.datetime.now() 
     self.updated_date = datetime.datetime.now() 
     self.description_html = markdown(self.description) 
     self.highlighted_code = self.highlight() 
     super(Snippet, self).save(force_insert, force_update) 

    @models.permalink 
    def get_absolute_url(self): 
     return ('cab_snippet_detail',(), { 'object_id': self.id }) 

    def highlight(self): 
     return highlight(self.code, 
         self.language.get_lexer(), 
         formatters.HtmlFormatter(linenos=True)) 

# See http://blog.sveri.de/index.php?/categories/2-Django 
tagging.register(Snippet, tag_descriptor_attr='etags') 

我改变了保存方法(试图摆脱错误的)来:

def save(self, *args, **kwargs): 
     if not 'force_insert' in kwargs: 
     kwargs['force_insert'] = False 
     if not 'force_update' in kwargs: 
     kwargs['force_update'] = False 
     # del kwargs['force_insert'] 
     if not self.id: 
     self.pub_date = datetime.datetime.now() 
     self.updated_date = datetime.datetime.now() 
     self.description_html = markdown(self.description) 
     self.highlighted_code = self.highlight() 
     super(Snippet, self).save(*args, **kwargs) 

我甚至尝试取消对#del位,这也没有帮助。我使用Django 1.3.1。任何想法,为什么我得到这个错误?

回答

1

保存覆盖的第二个版本应该没问题,但我会摆脱两个if语句和del行。

如果仍然不起作用,请确保您的开发服务器实际上正在重新加载models.py文件。最快的方法是CTRL + C运行,然后再次呼叫python manage.py runserver。虽然它不重要,但您也可以同时摆脱models.pyc(models.py的编译版本),只是为了确保新代码正在运行。

虽然实用的Django Projects是一本很好的书,但它的已经过时了。你可能想要寻找更新的资源来学习。

+0

只是自己修复它,事实证明我也需要在书签模型上完成它,因为它使用片段模型。 – Superdooperhero

相关问题