2016-08-04 8 views
2

Djangoのバージョン1.10 Pythonのバージョン3.4は、I型およびmanage.pyシェルでこのコードを実行し、

をエントリを作成することはできません

invalid literal for int() with base 10: 'Parse JSON like a Boss'

モデル.py:

class Tweet(models.Model): 
    text = models.TextField() 
    pub_time = models.DateTimeField(auto_now_add=True) 
    author = models.CharField(max_length=100) 

    class Meta: 
     ordering = ['-pub_time'] 

答えて

4

モデルのすべてのフィールドに値を指定しない場合は、名前の値のペアとして持つ値を送信する必要があります。

Tweet(text="Parse JSON like a boss", author="admin") 

は、実際には、それが将来的にモデルへの変更は、他の場所であなたのコードを壊さないように、このすべての時間を行うための最善の方法です。あなたはあなたが提供する引数上ジャンゴ反復処理し、その後、kwargsからを使用していない場合、フィールドは(Source Code)辞書内部フィールド内にあるのと同じ順序で

To create a new instance of a model, just instantiate it like any other Python class:

class Model(**kwargs)[source]¶ The keyword arguments are simply the names of the fields you’ve defined on your model. Note that instantiating a model in no way touches your database; for that, you need to save().

+0

興味深い事実:私が入力しようとしたとき tweet = Tweet(0、 "Test"、 "admin") これは大丈夫です。おそらくidの問題 – MaxTester

+0

はい、それは興味深いdjangoがおそらくidフィールドのテストを選択していましたが、新しいインスタンスを作成するための推奨される方法はkwargsです。アップデートをご覧ください – e4c5

0

:また、それは manualで推奨される方法です

何をしているように見えるのは、整数だけを受け入れるidパラメータにテキストを割り当てることです。

はい、e4c5に示すように、kwargsを使う方がずっと良いです。

関連する問題