記事を投稿する時に、制作者と日付が同じであれば、bool値で返すようにしたい。
前提
flaskを使ってログイン機能付きの日記帳を作成しています。
ユーザー登録・ログイン+投稿機能に必要なクラスとして、以下クラスとカラムを作成しました。
Userクラス(ユーザー登録・ログイン機能)
・id
・username
・password
Postクラス(投稿機能)
・title
・body
・posted_day(String型)
・created_user
投稿する際に同じ投稿者が記事を同じ日に投稿できないようにしたいと考えております。
同じ投稿日に投稿できないようにすることはできたのですが、一人のユーザーがある日に記事を投稿してしまうと、ほかのユーザーも該当日に投稿できなくなってしまいます。
9行目、if文内の記述が間違っているのはわかっているのですが、どのように記述すればいいか見当がつかなかったためご教示いただけると幸いです。
該当のソースコード
python
1@app.route("/create",methods=['GET', 'POST'])2@login_required3def create():4 if request.method =='POST':5 title = request.form.get('title')6 body = request.form.get('body')7 posted_day =str(request.form.get('posted_day'))8 created_user = current_user.username 9 if Post.query.filter(Post.posted_day == posted_day).all():10 return redirect('/')11 else:12 post = Post(title=title, body=body, created_user=created_user,posted_day=posted_day)13 db.session.add(post)14 db.session.commit()15 return redirect('/')16 else :17 return render_template("create.html")
試したこと
9行目に付け加える形で条件式andを使い記述して試してみました。
python
1Post.query.filter(Post.posted_day == posted_day).all() and (post.username for post in Post.query.filter(Post.posted_day == posted_day).all())
補足情報(FW/ツールのバージョンなど)
開発環境
Mac M1
python3.10
ORM : SQLAlchemy
フレームワーク:flask
0 コメント