Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2010 11:01:56

Evgi
От:
Зарегистрирован: 2010-02-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Древовидная структура объектов

Как организовать такую древовидную структуру?

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 = 'Владелец')



Офлайн

#2 Фев. 27, 2010 11:06:31

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Древовидная структура объектов

Офлайн

#3 Фев. 27, 2010 11:37:14

Evgi
От:
Зарегистрирован: 2010-02-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Древовидная структура объектов

Спасибо, заработало:

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



Офлайн

#4 Фев. 27, 2010 14:29:20

Evgi
От:
Зарегистрирован: 2010-02-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Древовидная структура объектов

Хотел прикрутить 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



Отредактировано (Фев. 27, 2010 14:34:00)

Офлайн

#5 Фев. 27, 2010 17:16:59

Rastler
От:
Зарегистрирован: 2010-02-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Древовидная структура объектов

Возник тот же вопрос, уверен есть какое-то готовое решение.



Офлайн

#6 Фев. 27, 2010 17:40:42

Evgi
От:
Зарегистрирован: 2010-02-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Древовидная структура объектов

Видимо надо еще зарегистрировать свою модель в 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…
Нафига мне эта колонка не нужна



Отредактировано (Фев. 27, 2010 17:45:54)

Офлайн

#7 Окт. 11, 2011 06:52:35

alienblaster
От:
Зарегистрирован: 2011-07-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Древовидная структура объектов

Некропостинг для тех, кто нагуглит проблему в будущем. Челу всего-то нужно было удалить базу и сделать syncdb.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version