Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django models 输入数据int SQL DB时出错_Django Models - Fatal编程技术网

Django models 输入数据int SQL DB时出错

Django models 输入数据int SQL DB时出错,django-models,Django Models,这应该很容易。我犯了一个我不明白的错误。我想我需要在DB中预先填充null值来解决这个问题,但我不清楚是否是这样。我得到了以下错误,我不明白的含义 无法添加:实例在数据库上无,值在数据库默认值上 models.py具有以下定义 class Tag(models.Model): name = models.CharField(max_length = "20", primary_key = True) class Page(models.Model): name = model

这应该很容易。我犯了一个我不明白的错误。我想我需要在DB中预先填充null值来解决这个问题,但我不清楚是否是这样。我得到了以下错误,我不明白的含义

无法添加:实例在数据库上无,值在数据库默认值上

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"

你在用电话吗?我认为您的路由器设置配置错误。看起来Django认为页面实例和添加到其中的标记实例不与同一数据库源关联。这是在路由器中设置的东西。

您是在询问回溯信息吗?我还是要添加。不,我正在同一系统上调试培训程序。我正在使用Django提供的免费Web服务器,该服务器位于官方教程1中,使用manage.py并在同一台计算机上的浏览器上进行测试。我的电脑连接到路由器以访问互联网,但我没有遇到任何问题。让我关掉路由器,看看它是否还能工作,但我认为这不重要……我不是指网络路由器,而是django路由器。我在答案中包含的链接解释了它是什么。你知道我刚刚关闭了它并重新启动,它似乎没有抛出错误,但我不认为它正在将数据保存到数据库中。我会读你指的那一节,看看这是否有帮助。谢谢