代码之家  ›  专栏  ›  技术社区  ›  demux

Django模型过滤器存储在数据库中

  •  2
  • demux  · 技术社区  · 14 年前

    我正在处理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 回复  |  直到 14 年前
        1
  •  2
  •   Matthew J Morrison    14 年前

    您应该能够使用筛选和排除字段的字典来实现这一点。

    假设要添加此筛选器:

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

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

    作为NewsContentModel的筛选器字段中的字符串。

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

    我想这应该管用。。。