Форум сайта python.su
Есть две таблицы сategories и directories - где directories список объектов, а categories один из типов объектов. Таблицы связаны по categories.directories_rid = directories.rid. При создании новой записи в categories, нужно сначала вставить запись в directories, а потом значение поля rid из directories использовать для создания записи в categories. Как сделать руками - понятно. Нужно решить задачу по автоматическому созданию записей в directories посредством ORM. Задача сделать все красиво, без рук, так как типов объектов типа categories, products и тд. будет большое множество. Взгляд брошен на MapperExtension - before_insert:
class DirectoryRegisterField(MapperExtension):
def __init__(self, field, obj_type):
self.field = field
self.obj_type = obj_type
def before_insert(self, mapper, connection, instance):
new_directory = Directory(self.obj_type)
meta.Session.add(new_directory)
meta.Session.commit()
setattr(instance, self.field, new_directory.rid)
class Category(BaseModelObj):
"""Category
"""
__obj_type__ = 'CATEGORY'
__tablename__ = 'category'
__mapper_args__ = {'extension': [DirectoryRegisterField('directory_rid', __obj_type__), SlugField('slug')]}
...................................
Офлайн
:)
может я чего-то не понял, но чем не угодили ForeignKey?
и ещё, приводите пример который может (должен) работать
Офлайн
Офлайн