Python SQLAlchemy Hybrid Property и выражение - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь добавить поле "slug" в мой класс db.Model Post, в котором оно берет заголовок сообщения и возвращает его в более удобном формате для URL.

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64), index=True, unique=True)
    body = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return '<Post {}>'.format(self.title)

    @hybrid_property
    def slug(self):
        result = []
        punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+')
        for word in punct_re.split(self.title.lower()):
            if word:
                result.append(word)
        return '-'.join(result)

Я могу ссылаться на слаг с помощью Post.slug, но когда я пытаюсь сделать запрос к нему, как Post.query.filter_by (slug = 'test-slug-1'), я получаю сообщение

sqlalchemy.exc.InvalidRequestError: Entity <class 'app.models.Post'> has no property 'slug'

Из того, что я понимаю, мне нужно гибридное выражение, но примеры, которые я видел, сделали его более запутанным. Любые идеи о том, как фильтровать по слаге гибридного свойства, или я собираюсь создать этот слаг неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...