推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
MrAMS
V2EX  ›  Python

一个关于 flask sqlalchemy 多对多 多表查询 的问题,求教🙏

  •  
  •   MrAMS · Feb 10, 2019 · 3367 views
    This topic created in 2784 days ago, the information mentioned may be changed or developed.

    Python Flask

    我想要实现这样一个功能,即返回用户关注的所有标签下的所有问题,并按照问题时间顺序排序。

    标签(Tag)与问题(Question)是多对多的关系,用户(User)与问题(Question)是一对多的关系

    我之前直接用的 db.Table 实现多对多,现在按照狗书将关联表改成了一个 FollowTag 模型,联结查询一直不怎么理解,请问该如何实现这个功能?模型与查询怎么写?感谢!🙏

    class FollowTag(db.Model):
        tag_id = db.Column(db.Integer, db.ForeignKey('tag.id'),
                           primary_key=True)
        question_id = db.Column(db.Integer, db.ForeignKey('question.id'),
                                primary_key=True)
        create_time = db.Column(db.DateTime, default=datetime.utcnow)
    
    Supplement 1  ·  Feb 10, 2019
    已解决,感谢诸位
    3 replies  •  2019-02-10 21:12:04 +08:00
    jmperdev
        1
    jmperdev  
       Feb 10, 2019 via Android
    FollowTag 表需要 user_id
    gogobody
        2
    gogobody  
       Feb 10, 2019 via Android
    instances = db.session.query(Question).join( FollowTag, FollowTag.question_id=Question.id).join(Tag,Tag.id==FollowTag.tag_id).join(User,User.id==Tag.user_id).filter(User.id==查询用户 id)
    .....大学学得不好🤣,不知道这样有没有用
    MrAMS
        3
    MrAMS  
    OP
       Feb 10, 2019
    @gogobody 感谢,我已经解决了,这样就好了
    ```python
    query = db.session.query(Question)
    query = query.filter(Question.tags.any(Tag.users.any(User.id == self.id)))
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2830 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:35 · PVG 11:35 · LAX 20:35 · JFK 23:35
    ♥ Do have faith in what you're doing.