Фильтры модели Django хранятся в базе данных - PullRequest
2 голосов
/ 17 августа 2010

Я работаю с типами контента в feincms.И я хочу сделать тип контента, который может хранить фильтры в базе данных.Примерно это будет выглядеть так:

from news.models import Entry
class NewsContent(models.Model):
    filter = models.CharField()
    exclude = models.CharField()
    offset = models.IntegerField()
    limit = models.IntegerField()
    #template = models.CharField()

    def get_entries(self):  
        return Entry.objects.filter(self.filter).exclude(self.exclude)[self.offset:self.limit_upper]

Возможно ли это?

Теперь это может быть или не быть хорошей идеей в отношении скорости, но это вопрос № 2

1 Ответ

2 голосов
/ 17 августа 2010

Вы должны быть в состоянии сделать это, используя словарь для фильтра и исключая поля.

Допустим, вы хотите добавить этот фильтр:

...filter(one='asdf', two='xyz')

тогда вы бы сохранили

"{'one':'asdf', 'two':'xyz'}"

в виде строки в поле фильтра вашей NewsContentModel.

тогда вы могли бы сделать это

def get_entries(self):
    return Entry.objects.filter(**eval(self.filter))

Я думаю, что это должно работать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...