2011-12-01 57 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