ошибка при вводе данных в базу данных SQL - PullRequest
0 голосов
/ 01 декабря 2011

Это должно быть легко.Я получаю ошибку, которую не понимаю.Я думаю, что мне нужно предварительно заполнить БД нулевыми значениями, чтобы это исправить, но мне неясно, так ли это.Я получаю следующую ошибку, которую я не понимаю ...

Невозможно добавить "": экземпляр находится в базе данных "Нет", значение в базе данных "по умолчанию"

у 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"

1 Ответ

0 голосов
/ 01 декабря 2011

Вы используете роутер ?Я думаю, что ваш маршрутизатор настроен неправильно.Похоже, Django считает, что экземпляр Page и экземпляр Tag, который вы добавляете в него, не связаны с одним и тем же источником базы данных.Это то, что можно настроить в маршрутизаторе.

...