2011-12-01 50 views
0

这应该是一个简单的问题。我收到一个我不明白的错误。我想我需要用空值预填充数据库来解决这个问题,但我不清楚这是否是这种情况。我收到以下错误,我不明白的意思......输入数据错误int SQL DB

无法添加“”:实例数据库“无”,值是数据库“默认”

的models.py具有以下定义...

class Tag(models.Model): 
    name = models.CharField(max_length = "20", primary_key = True) 

class Page(models.Model): 
    name = models.CharField(max_length="45", primary_key = True) 
    content = models.TextField(blank=True) 
    pub_date = models.DateTimeField('date published') 
    tags = models.ManyToManyField(Tag) 
    def __unicode__(self): 
     return self.name 

未能成功地进行渲染的看法是......

def save_page(request, page_name): 
    date = datetime.date.today() 
    content = request.POST["content"] 
    tag_list = [] 
    if "tags" in request.POST: 
     tags = request.POST["tags"] 
     tag_list = [Tag.objects.get_or_create(name=tag)[0] for tag in tags.split()] 

    try: 
     page = Page.objects.get(pk=page_name) 
     page.content = content 
     for tag in tag_list: 
      page.tags.add(tag) 

    except Page.DoesNotExist: 
     page = Page(name=page_name, content = content, pub_date = date) 
     for tag in tag_list: 
      page.tags.add(tag) 

    page.save() 
    return HttpResponseRedirect("/wikicamp/page/" + page_name +"/") 

回溯:

Environment: 


Request Method: POST 
Request URL: http://localhost:8080/wikicamp/page/Start/save/ 

Django Version: 1.3.1 
Python Version: 2.7.2 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'wikicamp.wiki', 
'django.contrib.admin'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "D:\web dev\training\Django\secondproj\wikicamp\..\wikicamp\wiki\views.py" in save_page 
    80.   page.tags.add(tag) 
File "C:\Python27\lib\site-packages\django\db\models\fields\related.py" in add 
    503.     self._add_items(self.source_field_name, self.target_field_name, *objs) 
File "C:\Python27\lib\site-packages\django\db\models\fields\related.py" in _add_items 
    563.            (obj, self.instance._state.db, obj._state.db)) 

Exception Type: ValueError at /wikicamp/page/Start/save/ 
Exception Value: Cannot add "<Tag: Tag object>": instance is on database "None", value is on database "default" 
+0

错误堆栈跟踪? –

+0

您是否要求追溯信息?无论如何,我会加入。 – user1054210

回答

0

您使用的是router?我认为你的路由器设置是错误配置的。它看起来像Django认为你添加到它的Page实例和标记实例没有关联到同一个数据库源。这是可以在路由器中设置的。

+0

不,我正在同一个系统上调试培训程序。我正在使用官方教程1中的Django的免费网络服务器,该教程使用manage.py和在同一台计算机上的浏览器进行测试。我的电脑连接到路由器访问互联网,但我没有问题。让我关闭路由器,看看它是否仍然有效,但我认为它应该没有关系... – user1054210

+0

我不是指网络路由器,而是一个django路由器(我在答案中包含的链接解释了它是什么) 。 –

+0

你知道我刚刚杀了它并重新启动,它似乎没有抛出错误,但我不认为它将数据保存到数据库中。我会阅读你指出的部分,看看是否有帮助。谢谢 – user1054210