View All Posts. MiCHiLU.com powered by Django ;-)

[Django]: Django和訳ドキュメント差分 Rev.6000:6036

Django オンラインドキュメント和訳 差分。 Revision 6000:6036 (2007/09/04). 「ForeignKey や ManyToManyField の保存」「manage.py flush, sqlflush」「テンプレートフィルタ unordered_list」「チュートリアル - モデルの作成, APIで遊んでみる」についての記述が更新されています。

以下、 主な変更です。

オブジェクトへの変更を保存する

この例では、背後で UPDATE SQL 文が実行されています。 Django は明示的に save() を呼び出すまでデータベースを操作しません。

save() メソッドには戻り値がありません。

ForeignKey や ManyToManyField の保存

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 はエラーを出します。

flush

開発版の Django では、このコマンドの動作仕様は変更されています。以前は、こ のコマンドはデータベース上のテーブルを (INSTALLED_APPS に登録されている モデルに関係しているかどうかに関わらず) 全て 消去していましたが、開発版 では、 INSTALLED_APPS で有効化しているモデルのテーブルだけを消去するよ うになりました。

sqlflush

flush コマンドによって実行されるのと等価な SQL 文を出力します。

runserver は動作中に Python のソースコード上に加えられた変更を自動的に 検出しますが、 testserver は検出しません。ただし、テンプレートへの変更 は検出します。

unordered_list

開発版の 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 にしかない機能をカバーしているか らです。

API で遊んでみる

__unicode__() がうまく動かない場合

モデルに __unicode__() メソッドを追加したのに、オブジェクトの表示が 何も変化しないのなら、古いバージョンの Django を使っているはずです。 (チュートリアルのこのバージョンは、最新の開発版 Django に準拠しています) Subversion を使って開発版の Django をチェックアウトしている場合 (詳しい 方法は インストール方法 を参照してください) 、うまく動作するはずです。

古いバージョンの Django を使わねばならない場合、 バージョン 0.96 用のチュートリアル を参照するよう勧めます。というのも、 このチュートリアルでは、開発版の Django にしかない機能をカバーしているか らです。

Wed, 5 Sep 2007 22:48:20 +0900 source edit
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.
View All Posts. MiCHiLU.com powered by Django ;-)