2017-01-03 9 views
2

Django 1.7.7とPython 3.4.4を使用してアンケートウェブサイトを構築しています。ユーザーは自分の「名前」と「ID」を入力します。私はすべてのユーザーの名前とIDを格納する "リスト"と呼ばれるSQLテーブルがあります。過去30日間にIDがすでにテーブルに存在する場合、Djangoのウェブサイトでユーザーが名前とIDを入力したかどうかを確認したいと思います。基本的に、ユーザーのIDが過去30日以内に存在する場合は、調査を受けるように求められません。そうでない場合は、調査を受ける必要があります。ユーザーが入力したエントリが、過去30日間に、私のdjangoウェブサイトに入力されているかどうかを確認するには

私はこの状態をチェックするビュー関数を構築しなければならないことは知っていますが、どのようなクエリ/ロジックでなければならないのか分かりません。ビュー機能の助けを借りれば、私の開発に大いに役立ちます!ありがとうございました。

+1

あなたが必要に応じて更新するデータベースにタイムスタンプを追加する必要があるようです。その後、必要に応じてタイムスタンプを確認することができます。 – DCR

+0

"list"テーブルには、送信日を記録する列がありますか?データベースで自動的にそのデータが記録されないため、日時列を追加し、それに応じて提出プロセスを更新する必要があります。その後、DjangoのORMを使って時間をかけてクエリとフィルタリングを行うことができます。日付範囲でのクエリの例については、このソリューションを確認してください:http://stackoverflow.com/a/6194999/844976 – YellowShark

答えて

1

"timestamp"フィールドをListモデルに追加できます。あなたも、先月内で同じ名前とIDを持つレコードがあるかどうかをチェックするよりもDjangoが自動的にauto_now_addパラメータ

timestamp = models.DateTimeField(auto_now_add=True) 

を使用してnow()に設定することができます:

from django.utils.timezone import now 
import datetime 
is_duplicate = List.objects.filter(id=id, name=name, timestamp__gte = now() - datetime.timedelta(days=30)) 

__gte construtionsの注意用法を - それは「より大きい」を意味し、数字とタイムスタンプと共に使用することができます。このフィルタは、過去30日以内に作成されたレコードのみを返します。お役に立てれば!

関連する問題