SQLAlchemy equivalent of named scopes in ActiveRecord

Is there an equivalent for AR area names? Named scopes are basically filters that can be wrapped in a method and then chained.

Here's an example from http://archives.ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know :

class Article < ActiveRecord::Base

  # Get all articles that have been published
  named_scope :published, :conditions => ['published = ?', true]

  # Get all articles that were created recently
  named_scope :recent, lambda { { :conditions => ['created_at >= ?', 1.week.ago] } }

end

# Get all recently created articles that have been published
Article.published.recent

      

Here is an example using Django ORM: http://furrybrains.com/2009/06/22/named-scopes-for-django/

+3


source to share


1 answer


SQLAlchemy has hybrid attributes that can be used to create any system:



class Article(Base):
    @hybrid_property
    def published(self):
        return self.is_published == True

    @hybrid_property
    def recent(self):
        # this relies on the date arithmetic of the target backend
        return datetime.now() - self.created_at >= datetime.timedelta(days=7)


articles = query(Article).filter(Article.published, Article.recent).all()

      

+14


source







All Articles