Djangoでアプリ開発をしています。
非常に基礎的な質問なのだと思いますが、セッションを使って、データベースにおけるテーブルのような形でデータを一時的に保持することはできるのでしょうか。
保存したいテーブルは、「session_id」と「item」の2つです。
一つの「session_id」につき、「item」は複数になりえます。
- セッションを利用しない場合
セッションを利用しないなら、下記の方法で実装できると思います。
python
1# models.py 2class Items(models.Model): 3 session_id = models.CharField(max_length=50) # 各ユーザーのsession_idを格納 4 item = models.CharField(max_length=50) # 各ユーザーのitemを格納 5 def __unicode__(self): 6 return self.item 7 8# views.py 9def insert(request, item): 10 session_id = request.session.session_key # ユーザーのsession_idを取得 11 items = Items(session_id=session_id, item=item) # Itemsテーブルにsession_idとitemを保存 12 items.save()
- memcachedを利用する場合
memcachedを利用するとできるのではないかと考え、下記のような記述をしてみました。
python
1import memcache 2 3def insert(request, item): 4 # session_id = request.session.session_key # ユーザーのsession_idを取得 5 # items = Items(session_id=session_id, item=item) # Itemsテーブルにsession_idとitemを保存 6 # items.save() 7 mc = memcache.Client(['127.0.0.1:11211']) 8 mc.set('item', item, time=300)
これにより、選んだitemのデータが1つ、300秒間保持できることは確認できました。
しかし、これでは、itemには、1つしかデータを保持できず、一つのsession_idに対し複数のitemを保持させることができません。
再度これを実行すると、洗い替えられてしまいます。
memcacheである必要はありませんので、セッションを利用してこのようなことができる方法はないでしょうか。
なお、セッションを利用したい理由は、データを永続的に保持したくないという理由だけです。
そのため、もし、難しければ、最悪、データベースを使ってデータを保持し、定期的に時間が経ったデータを削除するという実装にしようと考えています。
お分かりの方、ご教示頂ければ幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/11 06:59
2016/08/11 07:07
退会済みユーザー
2016/08/11 07:23
退会済みユーザー
2016/08/11 07:31
退会済みユーザー
2016/08/11 07:36
2016/08/11 08:08
退会済みユーザー
2016/08/11 08:41