[解決済み] Django の datetime の問題 (default=datetime.now())
2022-02-07 20:54:34
質問
以下のようなDBモデルを持っています。
from datetime import datetime
class TermPayment(models.Model):
# I have excluded fields that are irrelevant to the question
date = models.DateTimeField(default=datetime.now(), blank=True)
以下のようにして、新しいインスタンスを追加しています。
tp = TermPayment.objects.create(**kwargs)
私の問題:データベース内のすべてのレコードの日付フィールドの値は同じで、それは最初の支払いの日付です。サーバーが再起動した後、1つのレコードには新しい日付があり、他のレコードは最初の日付と同じになっています。いくつかのデータがキャッシュされているように見えますが、どこにあるのかわかりません。
データベース: mysql 5.1.25
django v1.1.1
解決方法は?
それは次のようになります。
datetime.now()
はモデルが定義されたときに評価されるのであって、レコードを追加するたびに評価されるわけではありません。
Djangoには、あなたがやろうとしていることを実現する機能がすでにあります。
date = models.DateTimeField(auto_now_add=True, blank=True)
または
date = models.DateTimeField(default=datetime.now, blank=True)
2番目の例と現在あるものとの違いは、括弧がないことです。を渡すことで
datetime.now
この関数は、レコードが追加されるたびに呼び出されます。もし、それを
datetime.now()
この場合、関数を評価し、その戻り値を渡しているだけです。
より詳しい情報は、Django の モデルフィールドリファレンス
関連
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] datetimeをdateに変換するにはどうすればよいですか?
-
[解決済み] Pythonで日付をdatetimeに変換する
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み】文字列をdatetimeに変換する
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Pythonコンテナのための組み込み汎用関数操作
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
任意波形を生成してtxtで保存するためのPython実装
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。