Django オンラインドキュメント和訳 差分。 Revision 6000:6036 (2007/09/04). 「ForeignKey や ManyToManyField の保存」「manage.py flush, sqlflush」「テンプレートフィルタ unordered_list」「チュートリアル - モデルの作成, APIで遊んでみる」についての記述が更新されています。
以下、 主な変更です。
この例では、背後で UPDATE SQL 文が実行されています。 Django は明示的に save() を呼び出すまでデータベースを操作しません。
save() メソッドには戻り値がありません。
ForeignKey フィールドの更新は、通常のフィールドへの変更と同じです。すな わち、適切な型のオブジェクトを代入して保存すると、フィールドの値を更新でき ます
cheese_blog = Blog.objects.get(name="Cheddar Talk")
entry.blog = cheese_blog
entry.save()
ManyToManyField の更新は少し違います。リレーションにレコードを一つ追加 したい場合は add() メソッドを使います
joe = Author.objects.create(name="Joe")
entry.authors.add(joe)
間違った型のオブジェクトを外部キーに代入したり add() したりすると Django はエラーを出します。
開発版の Django では、このコマンドの動作仕様は変更されています。以前は、こ のコマンドはデータベース上のテーブルを (INSTALLED_APPS に登録されている モデルに関係しているかどうかに関わらず) 全て 消去していましたが、開発版 では、 INSTALLED_APPS で有効化しているモデルのテーブルだけを消去するよ うになりました。
flush コマンドによって実行されるのと等価な SQL 文を出力します。
runserver は動作中に Python のソースコード上に加えられた変更を自動的に 検出しますが、 testserver は検出しません。ただし、テンプレートへの変更 は検出します。
開発版の Django で変更された仕様
unordered_list の引数の形式は、より分かりやすい形式に変更されました。
リストは適切な形式になっているものとみなします。例えば、 var が ['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']] であれば、 {{ var|unordered_list }} は以下のようになります
ノート: 以前の、より杓子定規で冗長な形式、 ['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois',[]]]] も継続してサポートしています。
max_length にまつわるエラー
Django が max_length が正しい引数でないというエラーを出す場合、古い バージョンの Django を使っているはずです。 (チュートリアルのこのバージョ ンは、最新の開発版 Django に準拠しています) Subversion を使って開発版の Django をチェックアウトしている場合 (詳しい方法は インストール方法 を 参照してください) 、エラーは起きないはずです。
古いバージョンの Django を使わねばならない場合、 バージョン 0.96 用のチュートリアル を参照するよう勧めます。というのも、 このチュートリアルでは、開発版の Django にしかない機能をカバーしているか らです。
__unicode__() がうまく動かない場合
モデルに __unicode__() メソッドを追加したのに、オブジェクトの表示が 何も変化しないのなら、古いバージョンの Django を使っているはずです。 (チュートリアルのこのバージョンは、最新の開発版 Django に準拠しています) Subversion を使って開発版の Django をチェックアウトしている場合 (詳しい 方法は インストール方法 を参照してください) 、うまく動作するはずです。
古いバージョンの Django を使わねばならない場合、 バージョン 0.96 用のチュートリアル を参照するよう勧めます。というのも、 このチュートリアルでは、開発版の Django にしかない機能をカバーしているか らです。
