2

Django/Python でフォーラムを作成するための lightbird チュートリアルに従っています。Threadモデルを作成するコードは次のとおりです。

class Thread(models.Model):
    title = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now_add=True)
    creator = models.ForeignKey(User, blank=True, null=True)
    modified = models.DateTimeField(auto_now=True)
    forum = models.ForeignKey(Forum)

    def __unicode__(self):
        return unicode(self.creator) + " - " + self.title

そしてPostモデル:

class Post(models.Model):
    title = models.CharField(max_length=60)
    created = models.DateTimeField(auto_now_add=True)
    creator = models.ForeignKey(User, blank=True, null=True)
    thread = models.ForeignKey(Thread)
    body = models.TextField(max_length=10000)

    def __unicode__(self):
        return u"%s - %s - %s" % (self.creator, self.thread, self.title)

    def short(self):
        return u"%s - %s\n%s" % (self.creator, self.title, self.created.strftime("%b %d, %I:%M %p"))
    short.allow_tags = True

unicode関数の後のコードを理解するのに苦労しています! 次のような非常に単純な形式でモデルを作成するときに、ユニコードを使用しています。

class Post(models.Model):
    title = models.CharField(max_length=100)

    def __unicode__(self):
        return self.title

私はこれを理解していますが、上記のモデルのコードは理解していません。誰か説明してくれませんか。ありがとうございました!

4

1 に答える 1

5
 unicode(self.creator) +\ #will call the __unicode__ method of the User class
 ' - ' +\ # will add a dash
 self.title #will add the title which is a string

次に2つ目

  "%s"%some_var #will convert some_var to a string (call __str__ usually...may fall back on __unicode__ or something)

それで

return u"%s - %s\n%s" % (self.creator, self.title, self.created.strftime("%b %d, %I:%M %p"))

作成者の User クラスの__str__(またはおそらく)関数を呼び出します__unicode__

次に、ダッシュとタイトルを追加します

\nエンドラインです

strftimeタイムスタンプを英語の "MonthAbbrv. Day, 24Hr:Minutes" に変換します。

于 2012-09-07T04:28:07.527 に答える