मैं स्क्लेक्लेमी में एक समस्या के लिए पूछ रहा था और लिखते समय समाधान मिला। मैं वैसे भी पोस्ट करता हूं अगर यह किसी की मदद करता है :)SQLAlchemy कई लोगों द्वारा कई लोगों को फ़िल्टर करने के लिए
मान लें कि मेरे पास काम करने के लिए कई रिश्ते हैं (कम से कम मैं बच्चों को ला सकता हूं) तीन टेबल: पोस्ट, टैग और पोस्ट_टैग।
import sqlalchemy as alc
class Tag(Base):
__tablename__ = 'tags'
id = alc.Column(alc.Integer, primary_key=True)
name = alc.Column(alc.String)
accepted = alc.Column(alc.Integer)
posts = relationship('Post', secondary=post_tags)
class Post(Base):
__tablename__ = 'posts'
id = alc.Column(alc.Integer, primary_key=True)
text = alc.Column(alc.String)
date_out = alc.Column(alc.Date)
tags = relationship('Mistake_Code', secondary=post_tags)
# relational table
post_tags = alc.Table('check_point_mistakes',
Base.metadata,
alc.Column('post_id', alc.Integer,ForeignKey('posts.id')),
alc.Column('tag_id', alc.Integer, alc.ForeignKey('tags.id')))
अब मेरी समस्या यह है कि मैं पोस्ट में date_out द्वारा पहले फ़िल्टर करना चाहता हूं। मैं इसे इस तरह प्राप्त कर सकता हूं:
# assume start_date and end_date
query = (
session.query(Post)
.filter(Post.date_out.between(start_date, end_date))
)
लेकिन एक ही समय में टैग द्वारा फ़िल्टर कैसे करें?