Найти - Пользователи
Полная версия: Древовидная структура объектов
Начало » Django » Древовидная структура объектов
1
Evgi
Как организовать такую древовидную структуру?
class Section(models.Model):
name = models.CharField(max_length=30, verbose_name = 'Наименование')
owner = models.ForeignKey(Section, verbose_name = 'Владелец')
Т.е. есть класс “Раздел”, он может быть как главным разделом (owner = null), так и подразделом (owner != null)
При python manage.py validate говорит что ошибка в строке:
 owner = models.ForeignKey(Section, verbose_name = 'Владелец')
vaxXxa
может будет в помощь:
http://code.google.com/p/django-mptt/
http://habrahabr.ru/blogs/django/85670/
Evgi
Спасибо, заработало:
class Section(models.Model):
name = models.CharField(max_length=30, verbose_name = 'Наименование')
owner = models.ForeignKey('self', verbose_name = 'Владелец', null=True, blank=True)
Evgi
Хотел прикрутить TreeEditor к данной модели, по инструкции указанной тут
http://spinlock.ch/pub/feincms/html/admin.html#module-feincms.admin.tree_editor
но не понял что надо для моей модели указывать?
# Из примера
from django.db import models

class YourModel(models.Model):
# model field definitions

class Meta:
ordering = ['tree_id', 'lft'] # The TreeEditor needs this ordering definition
# Моя модель
class Section(models.Model):
name = models.CharField(max_length=30, verbose_name = 'Наименование')
owner = models.ForeignKey('self', verbose_name = 'Владелец', null=True, blank=True)

def __unicode__(self):
return self.name

class Meta:
ordering = [?, ?] # The TreeEditor needs this ordering definition
ставлю ordering = вылазит ошибка:
AttributeError at /admin/myapp/section/

'Options' object has no attribute ‘tree_id_attr’

Request Method: GET
Request URL: http://127.0.0.1:8000/admin/myapp/section/
Exception Type: AttributeError
Exception Value:

'Options' object has no attribute ‘tree_id_attr’

Exception Location: C:\Python26\lib\site-packages\feincms-1.0.99-py2.6.egg\feincms\admin\tree_editor.py in _build_tree_structure, line 54
Python Executable: C:\Python26\python.exe
Python Version: 2.6.4
Python Path:
Server time: Сбт, 27 Фев 2010 15:31:50 +0300
Rastler
Возник тот же вопрос, уверен есть какое-то готовое решение.
Evgi
Видимо надо еще зарегистрировать свою модель в mptt:

import mptt

class Section(models.Model):
name = models.CharField(max_length=30, verbose_name = 'Наименование')
owner = models.ForeignKey('self', verbose_name = 'Владелец', null=True, blank=True)

class Meta:
ordering = ['name']

def __unicode__(self):
return self.name

mptt.register(Section, ...)
Вот определение функции регистрации:
def register(model, parent_attr='parent', left_attr='lft', right_attr='rght',
tree_id_attr='tree_id', level_attr='level',
tree_manager_attr='tree', order_insertion_by=None)
Вопрос как регистрировать для моей модели Section?
parent_attr = ‘owner’ ???
left_attr = ???
right_attr = ???
tree_id_attr = ‘id’ ???
level_attr = ???
tree_manager_attr = ???

Если что то не указывать возникают ошибки типа:
Exception Value: column myapp_section.lft does not exist
LINE 1: …myapp_section“ ORDER BY ”myapp_section“.”id“ ASC, ”myapp_sec…
Нафига мне эта колонка не нужна
alienblaster
Некропостинг для тех, кто нагуглит проблему в будущем. Челу всего-то нужно было удалить базу и сделать syncdb.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB