Форум сайта python.su
Я уже пау дней прибываю в недоумении, почему ни у кого нет проблемы с гомогеннымдеревом модели постороенным mptt
c мускулом
модель
import mptt
class Category(models.Model):
name = models.CharField(max_length=50, unique=True)
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
def __unicode__(self):
return self.name
mptt.register(Category, order_insertion_by=['name'])
>>> from main.models import Category as c
>>> r=c(name='root')
>>> r.save()
/usr/lib64/python2.6/site-packages/django/db/backends/mysql/base.py:86: Warning: Field 'lft' doesn't have a default value
return self.cursor.execute(query, args)
/usr/lib64/python2.6/site-packages/django/db/backends/mysql/base.py:86: Warning: Field 'rght' doesn't have a default value
return self.cursor.execute(query, args)
/usr/lib64/python2.6/site-packages/django/db/backends/mysql/base.py:86: Warning: Field 'tree_id' doesn't have a default value
return self.cursor.execute(query, args)
/usr/lib64/python2.6/site-packages/django/db/backends/mysql/base.py:86: Warning: Field 'level' doesn't have a default value
return self.cursor.execute(query, args)
>>>
CREATE TABLE `main_category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
`lft` int(10) unsigned NOT NULL,
`rght` int(10) unsigned NOT NULL,
`tree_id` int(10) unsigned NOT NULL,
`level` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `main_category_63f17a16` (`parent_id`),
KEY `main_category_42b06ff6` (`lft`),
KEY `main_category_91543e5a` (`rght`),
KEY `main_category_efd07f28` (`tree_id`),
KEY `main_category_2a8f42e8` (`level`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
CREATE TABLE "main_category" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(50) NOT NULL UNIQUE,
"parent_id" integer
)
Офлайн
Потому что код SQL, который создает таблицу, генерирует другой модуль.
Офлайн
хорошо. тогда вопрос в лоб: как победить вышеданную ошибку?
Отредактировано (Июль 29, 2010 15:22:23)
Офлайн
Проделал описанное автором поста. Ошибку подтверждаю.
Ошибка:
>>> from testmodulesdjango.models import Category as model
>>> root=model(name='root')
>>> root.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib64/python2.6/site-packages/django/db/models/base.py", line 435, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/usr/lib64/python2.6/site-packages/django/db/models/base.py", line 528, in save_base
result = manager._insert(values, return_id=update_pk, using=using)
File "/usr/lib64/python2.6/site-packages/django/db/models/manager.py", line 195, in _insert
return insert_query(self.model, values, **kwargs)
File "/usr/lib64/python2.6/site-packages/django/db/models/query.py", line 1479, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/lib64/python2.6/site-packages/django/db/models/sql/compiler.py", line 783, in execute_sql
cursor = super(SQLInsertCompiler, self).execute_sql(None)
File "/usr/lib64/python2.6/site-packages/django/db/models/sql/compiler.py", line 727, in execute_sql
cursor.execute(sql, params)
File "/usr/lib64/python2.6/site-packages/django/db/backends/util.py", line 15, in execute
return self.cursor.execute(sql, params)
File "/usr/lib64/python2.6/site-packages/django/db/backends/mysql/base.py", line 86, in execute
return self.cursor.execute(query, args)
File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 175, in execute
if not self._defer_warnings: self._warning_check()
File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 89, in _warning_check
warn(w[-1], self.Warning, 3)
Warning: Field 'lft' doesn't have a default value
>>> import mptt
>>> mptt.VERSION
(0, 3, 'pre')
Офлайн