Skip to content

Commit 19ea9c1

Browse files
committed
Update 'ref/models/instances.txt' (#224)
1.0〜1.4間の変更差分を適用する前に、__str__ の章と __unicode__ の章の順序変 更を先に反映(以後のdiffを確認しやすくするため)。
1 parent 3bebe61 commit 19ea9c1

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

ref/models/instances.txt

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
モデルインスタンスリファレンス
55
===============================
66

7-
:revision-up-to: 13211 (1.1) unfinished
7+
:revision-up-to: 17812 (1.4) unfinished
88

99
.. currentmodule:: django.db.models
1010

@@ -248,6 +248,31 @@ Deleting objects
248248

249249
モデルには、特殊な使われ方をするメソッドがあります:
250250

251+
``__unicode__``
252+
---------------
253+
254+
.. method:: Model.__unicode__()
255+
256+
``__unicode__()`` メソッドは、オブジェクトに対して ``unicode()`` を呼び出し
257+
た際に呼び出されます。Django のデータベースバックエンドはモデルの属性値とし
258+
て Unicode 文字列を返すので、通常はモデルの ``__unicode__()`` メソッドを定
259+
義するとよいでしょう。前節の例を ``__unicode__()`` を使って書き直すと、以下
260+
のように簡単になります::
261+
262+
class Person(models.Model):
263+
first_name = models.CharField(max_length=50)
264+
last_name = models.CharField(max_length=50)
265+
266+
def __unicode__(self):
267+
return u'%s %s' % (self.first_name, self.last_name)
268+
269+
モデルに ``__unicode__()`` メソッドだけを定義して、 ``__str__()`` は定義し
270+
ないでおくと、 Django が自動的に ``__str__()`` メソッドをモデルに追加します。
271+
この ``__str__()`` メソッドは、 ``__unicode__()`` を呼び出して、その戻り値
272+
を UTF-8 でエンコードした文字列を返します。開発上はこの仕様に従い、
273+
``__unicode__()`` だけを定義して、文字列オブジェクトへの変換は Django 任せ
274+
にするよう勧めます。
275+
251276
``__str__``
252277
-----------
253278

@@ -274,31 +299,6 @@ Deleting objects
274299
# django.utils.encoding.smart_str() を使う
275300
return smart_str('%s %s' % (self.first_name, self.last_name))
276301

277-
``__unicode__``
278-
---------------
279-
280-
.. method:: Model.__unicode__()
281-
282-
``__unicode__()`` メソッドは、オブジェクトに対して ``unicode()`` を呼び出し
283-
た際に呼び出されます。Django のデータベースバックエンドはモデルの属性値とし
284-
て Unicode 文字列を返すので、通常はモデルの ``__unicode__()`` メソッドを定
285-
義するとよいでしょう。前節の例を ``__unicode__()`` を使って書き直すと、以下
286-
のように簡単になります::
287-
288-
class Person(models.Model):
289-
first_name = models.CharField(max_length=50)
290-
last_name = models.CharField(max_length=50)
291-
292-
def __unicode__(self):
293-
return u'%s %s' % (self.first_name, self.last_name)
294-
295-
モデルに ``__unicode__()`` メソッドだけを定義して、 ``__str__()`` は定義し
296-
ないでおくと、 Django が自動的に ``__str__()`` メソッドをモデルに追加します。
297-
この ``__str__()`` メソッドは、 ``__unicode__()`` を呼び出して、その戻り値
298-
を UTF-8 でエンコードした文字列を返します。開発上はこの仕様に従い、
299-
``__unicode__()`` だけを定義して、文字列オブジェクトへの変換は Django 任せ
300-
にするよう勧めます。
301-
302302
``get_absolute_url``
303303
--------------------
304304

0 commit comments

Comments
 (0)