2010-08-23 1 views
1

Я хотел бы переопределить класс менеджера, чтобы разрешить загрузку содержимого данных из текстовых файлов (здесь в разделе «/ один каталог/myPrefix_ *») в поле содержимого а не из таблицы базы данных.Менеджер задает запрос из файлов, а не из базы данных

class Things(model.Models): 
    file = CharField(max_length = 25, primary key = True) 
    content = TextField() 
    objects = myManager("/one directory/", "myPrefix_") 

Я был бы признателен за использование этого урока на административном сайте, если это возможно.

Является ли мой дикий сон возможным?

+0

«разрешить загрузку данных контента из текстовых файлов» ... означает ли это, что вы хотите использовать текстовые файлы * вместо * базы данных? – elo80ka

+0

Да. Я знаю, что база данных более современная и гибкая. Но так как окончательный результат должен быть записан в файлы, база данных дублирует значения поля «контент». –

ответ

0

Я бы решил это, переименовав объекты в _объекты, а затем создав функцию свойств для загрузки данных. Что-то вроде кода ниже должен делать то, что вам нужно ...

class Things(model.Models): 
    file = CharField(max_length = 25, primary key = True) 
    content = TextField() 
    _objects = CharField(max_length = 50) 

    @property 
    def objects(self): 
     return load_content_from("/one directory/myPrefix_" + self._objects) 

Если вы хотите увидеть содержимое из файлов в сайте администратора, то вам, вероятно, нужно, чтобы создать свой собственный тип поля (см http://code.djangoproject.com/browser/django/trunk/django/db/models/fields) ,

+0

Во-первых, спасибо за ваш ответ. Но в этом случае Thinks.objects.all() больше не будет доступен, потому что менеджер был бы заменен. Я думаю, что «контент» должен быть задан вызываемым @property. «content» - свойство read_only, и добавляется новое поле, представляющее имя файла. Гораздо проще, чем пользовательский менеджер! –

 Смежные вопросы

  • Нет связанных вопросов^_^