54173


標記に関し、質問致します。

models.py に、後からcreated_atというフィールドを加え、

[code]

    auto_now_add=True
    
[/code]

としてフィールドを設定したのですが、  
下記のところから何を入れれば先に進めるのかわからず止まりました。

[code]

    python manage.py makemigrations
    You are trying to add the field 'created_at' with 'auto_now_add=True' to resultreport without a default; the database needs something to populate existing rows.
    
     1) Provide a one-off default now (will be set on all existing rows)
     2) Quit, and let me add a default in models.py
    Select an option: 1
    Please enter the default value now, as valid Python
    You can accept the default 'timezone.now' by pressing 'Enter' or you can provide another value.
    The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now
    Type 'exit' to exit this prompt
    [default: timezone.now] >>> 
    
[/code]

◆試したこと  
1、modelのフィールドに加えてみた。

・default=datetime.now  
・blank=True  
・null=True

全部シリアライズができないと怒られた。

2、上のプロンプトに色々な値を入れてみた  
何を入れてみてもstrだの、知らないだの怒られた。

公式ドキュメントを確認し、  
[<https://docs.djangoproject.com/ja/2.1/ref/models/fields/#django.db.models.DateField.auto_now_add][1]>

DateField auto_now オブジェクトが保存される度に自動的に現在の日付をセットします。  
auto_now_add オブジェクトが最初に作成されるとき、  
自動的にフィールドに現在の日付をセットします。

※auto_now と auto_now_add と default は排他的です。  
同時に使用するとエラーが発生します。  
TimeField auto_now 同上  
auto_now_add 同上  
DateTimeField auto_now 同上  
auto_now_add 同上

ここまでは理解しましたが、エラーを乗り越えることが現状できず、、自分の理解では先に進まないと思ったので質問致します。（そもそもauto_now_addを使うべきではないのか？どうかも含めてわからないです。このようなとき、みなさんなら無視して他の解決方法で進めますか？）

宜しくお願い致します。


CC BY-SA 4.0
2019-04-14T02:07:12.660
54152
2021-05-05T00:50:23.540
2021-05-05T00:50:23.540
19110
29307
question
python python3 django
djangoのmodelに後からauto_now_addを加える場合の処理の方法について


プロンプトで先に進めれば解決になる感じですかね。であれば

> 2、上のプロンプトに色々な値を入れてみた  
>  何を入れてみてもstrだの、知らないだの怒られた。

プロンプトのメッセージのとおり、 `timezone.now` でよければそのままエンターキーを、何か他の値を入れたければその値を valid Python
として入力してエンターキーを押せばよいかと思います。

> そもそもauto_now_addを使うべきではないのか？

そんなことはありません。ご存知のとおり適切に使えばとても便利なものなので、必要に応じて使って問題ないかと思います。


CC BY-SA 4.0
2019-04-15T07:11:26.120
54173
2019-04-15T07:11:26.120
28632
54152
answer