App12/models.pyモジュールを次のように作成しました:
from Django.db import models
class Question(models.Model):
ques_text=models.CharField(max_length=300)
pub_date=models.DateTimeField('Published date')
def __str__(self):
return self.ques_text
class Choice(models.Model):
# question=models.ForeignKey(Question)
choice_text=models.CharField(max_length=300)
votes=models.IntegerField(default=0)
def __str__(self):
return self.choice_text
次に、cmdsを実行します
python manage.py makemigrations App12
python manage.py migrate
次に、質問モデルに2つのレコードを次のように入力します。
Question.objects.create(ques_text="How are you?",pub_date='timezone.now()')
# and (ques_text="What are you doing?",pub_date='timezone.now()')
次に、質問と選択モデルは外部キー関係にある必要があることを認識し、モデルコードの上記のコメントのコメントを外します
「python manage.py makemigrations App12
"、それは正常に動作していますが、その後、私は
"TypeError: int() argument must be a string or a number, not 'datetime.datetime"
「python manage.py migrate」コマンドを実行するとエラーが発生します。
誰かが私を助けてくれますか?選択モデルと質問モデルの間に外部キー関係を追加するにはどうすればよいですか?.
移行ファイルからこのエラーが発生するのは通常のことであり、int型である必要があるForeignkeyに日時を格納しようとしています。
これは、新しいForeignKeyが必要なために移行が古い選択肢行に設定する値を尋ねたときに発生します。
これを解決するには、移行ファイルを変更し、datetime.date ...を次のコードのような質問テーブルからの有効なIDに変更します。または、移行ファイルを削除して./manage.py makemigrationsを再実行します。デフォルト値について尋ねられたら、日時ではなく有効な質問IDを要求します。
from future import unicode_literals
from Django.db import models, migrations
import datetime
class Migration(migrations.Migration):
dependencies = [ ('App11', '0003_remove_choice_question'), ]
operations = [
migrations.AddField(
model_name='choice',
name='question',
field=models.ForeignKey(default=1, to='App11.Question'), preserve_default=False, ),
]
pub_date
は文字列であってはなりません。次のようにオブジェクトを作成します。
from Django.utils import timezone
Question.objects.create(ques_text="How are you?",pub_date=timezone.now())