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

[Django]: Django和訳ドキュメント sync to r5692

Django オンラインドキュメント和訳 更新しました。 Revision 5692 (2007/07/14). 「データベース API リファレンス - 生データの保存」「Django ディストリビューション - Debian, Mac OS X」「django.middleware.locale.LocaleMiddleware」「RequestSite オブジェクト」「Feed クラスリファレンス」「newforms - save()メソッド」「django-admin.py - syncdb」についての記述が更新されています。

以下、 diff -r 5613:5692 の主な変更分です。

生データの保存

Django のオブジェクトの保存処理では,オブジェクト内のデータに対する前処理が 起きることがあります.たとえば,モデルに auto_now=TrueDateField が入っている場合, 前処理のフェイズでフィールドの値が最新のタイムスタンプ になるように,オブジェクト内のデータが置き換えら得ます.

こうした自動更新の機能は便利ではありますが,本当に設定したデータをそのまま 保存したい場合もあるでしょう.そのために, save() メソッドに raw=True パラメタを指定すると, 生データの保存 を行えます:

b4.save(raw=True)  # オブジェクトを保存しますが,前処理は行いません

生データの保存はオブジェクト内の全てのデータについて,前処理を伴わない保存 を実行します.

Debian

Debian GNU/Linux では, Django の debian パッケージ を利用できます. バージョン 0.95.1 は "stable" リポジトリから, 0.96 は "testing" および "unstable" リポジトリからインストールできます.どのリポジトリを使うにしても, apt-get install python-django でインストールできます..

Mac OS X

MacPorts

Django 0.96 は MacPorts からインストールできます. Python 2.4 を使ってい るのなら, sudo port install py-django-devel でインストールします. Python 2.5 なら, sudo port install py25-django-devel です. MacPorts を使えば,バックエンドデータベースや,データベース用の Python インタフェー スモジュールのインストールも行えます.

django.middleware.locale.LocaleMiddleware

リクエストに基づいて言語の選択を行います.言語の選択によって,ユーザごとに 提供するコンテンツをカスタマイズできます. 国際化のドキュメント を参照し てください.

RequestSite オブジェクト

開発バージョンの Django で新たに登場した機能です

django.contrib 内のアプリケーションの中には, sites フレームワークを利 用はできるけれども, 必須にはしない ようなものがあります (sites を使いた くない人や, sites フレームワークが必要とするデータベーステーブルの作成が 不可能な 人もいるためです).こうした場合のために,sites フレームワークで は RequestSite クラスを提供しています.このクラスは,データベースバック エンド上に sites フレームワークがない場合のフォールバックとして使われます.

RequestSite オブジェクトは,通常の Site オブジェクトと同様のインタ フェースを備えていますが, __init__()HttpRequest オブジェクトを 取るところが違います.このオブジェクトはリクエストのドメイン情報を見ること で domainname を決定します. Site オブジェクトとインタフェー スを合わせるため, RequestSite オブジェクトにも save()delete() といったメソッドがありますが,これらのメソッドを呼び出すと NotImplementedError を送出します.

初期化

最新の開発版の Django を使っていないのなら, sites フレームワークがインストー ルされていて,データベースのテーブルが生成されているか確認してください. (詳しくは sites フレームワークのドキュメント を参照してください). sites への依存性は開発版の Django で変更され,現在では配信ふぃーどフレームワーク は sites フレームワークに依存していません.

Feed クラスリファレンス

# GUID -- 省略可能です.配信フレームワークは以下の順に値を探します.
# このプロパティは Atom フィード (のフィードレベルの ID エレメント)
# でしか使いません.省略すると,フィードのリンクを ID に使います.
#
# (開発バージョンの Django で新たに登場した機能です)

def feed_guid(self, obj):
    """
    get_object() の返すオブジェクトを引数にとり,一意なフィードの識
    別子を Python 文字列として返します.
    """

def feed_guid(self):
    """
    一意なフィードの識別子を Python 文字列として返します.
    """

feed_guid = '/foo/bar/1234' # ハードコード形式の guid です.

# ITEM_GUID -- 以下のメソッドは省略可能です.
# このプロパティは Atom フィード (のフィードレベルの ID エレメント)
# でしか使いません.省略すると,item のリンクを ID に使います.
#
# (開発バージョンの Django で新たに登場した機能です)

def item_guid(self, obj):
    """
    items() の返す item を引数にとり, item の ID を返します.
    """

save() メソッド

この save() メソッドには,オプションとして commit キーワード引数を 渡せます. commit には True または False を指定します. commit=False を指定して save() を呼び出すと,まだデータベースに保存 されていない状態のモデルインスタンスを返します.この場合,モデルインスタン スを保存するためには,明示的にインスタンスの save() を呼び出さねばなり ません.この機能は,モデルインスタンスを保存する前に何らかの前処理を行いた い場合に便利です. commit のデフォルト値は True に設定されています.

syncdb

syncdb は既存のテーブルを置き換えません

syncdb は,インストールされていないモデルのテーブルしか作成しません. すでにインストールされているモデルクラスに変更を行っても,それに合わせる ように ALTER TABLE を発行することは 決してありません .モデルクラ スやデータベーススキーマに対する変更には,何らかの形であいまいな部分があ るものです.そのあいまいな部分に対して, Django どのように変更を適用すべ きか正しく判断せねばならないとすれば,変更の過程で重要なデータが失われる というリスクが生まれてしまいます.

モデルに変更を適用した後,変更に合わせてデータベーステーブルも置き換えた いのなら, sql コマンドを使って新たな SQL を出力し,既存のテーブルス キーマと比較して,手動で変更を適用してください.

Sat, 14 Jul 2007 18:22:42 +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 ;-)