python - Comment paginer les résultats d'une requête plusieurs-à-plusieurs Flask SQLalchemy?
三叔
三叔 2017-06-12 09:22:47
0
1
1397

J'utilise flask pour créer un blog tout en apprenant flask. (Un article peut avoir plusieurs balises, et une balise peut correspondre à plusieurs articles, je suis donc la relation plusieurs à plusieurs ici), qui vient avec flask-sqlalchemy La méthode paginate. ne peut prendre en charge que les objets flask_sqlalchemy.BaseQuery pour la pagination. Cependant, j'ai utilisé des balises dans une relation multi-paires pour trouver tous les objets d'article associés à la balise. L'objet est une liste, la pagination ne peut donc pas être effectuée. . . Que dois-je faire si je veux paginer maintenant ?

Dois-je écrire moi-même une pagination maintenant ? J'espère que des experts au bon cœur pourront me donner des conseils sur l'idée générale.
Exemple :

#多对多关系中的两个表之间的一个关联表
tags = db.Table('post_tags',
    db.Column('post_id',db.Integer,db.ForeignKey('posts.id')),
    db.Column('tag_id',db.Integer,db.ForeignKey('tag.id'))
)

# 发表文章模型
class Post(db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255))
    body = db.Column(db.Text())
    body_html = db.Column(db.Text())
    created = db.Column(db.DateTime)

    author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    comments = db.relationship('Comment', backref='post',lazy='dynamic')  # 关联评论
    tags = db.relationship('Tag',secondary=tags,backref=db.backref('posts',lazy='dynamic'))#多对多关联

    def __repr__(self):
        return "<post_id={0}>".format(self.id)
        
#标签
class Tag(db.Model):
    __tablename__ = 'tag'
    id = db.Column(db.Integer,primary_key=True)
    title = db.Column(db.String(255))\


    def __repr__(self):
        return "{0}".format(self.title)

三叔
三叔

répondre à tous(1)
伊谢尔伦

J'ai dit que la pagination est sans stress. Vous pouvez certainement utiliser la pagination

.
>>> r=Role.query.get(1)
>>> r
manager
>>> r.users
<sqlalchemy.orm.dynamic.AppenderBaseQuery object at 0x7f5ae257a510>
>>> r.users.paginate(1, 20, None)                
<flask_sqlalchemy.Pagination object at 0x7f5ae1829150>

L'utilisateur et le rôle sont plusieurs à plusieurs, et je n'ai pas trouvé le problème mentionné par l'affiche originale.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal