class BaseCommentAbstractModel(models.Model):
"""
An abstract base class that any custom comment models probably should
subclass.
"""
# Content-object field
content_type = models.ForeignKey(ContentType,
verbose_name=_('content type'),
related_name="content_type_set_for_%(class)s")
object_pk = models.TextField(_('object ID'))
content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")
# Metadata about the comment
site = models.ForeignKey(Site)
class Meta:
abstract = True
def get_content_object_url(self):
"""
Get a URL suitable for redirecting to the content object.
"""
return urlresolvers.reverse(
"comments-url-redirect",
args=(self.content_type_id, self.object_pk)
)
私はこのモデルコードに関連する2つの質問があります。djangoコメントアプリのBaseCommentAbstractModelに関する説明が必要
models.TextField(_('object ID'))
おそらく冗長なオブジェクトIDです。このTextFieldの名前は、データベースにどのように反映されますか?- なぜdjangoはabc(AbstractBaseClass)モジュールを使用するのではなく、Meta内部クラスのフィールド
abstract
に依存していますか?確かにその冗長な名前です
_()は、文字列を(通常は)ローカライズするための機能です。つまり、スペイン語でページを表示している場合、 "identificacion de objecto"のように保存されます。 –
@JoranBeasleyは正しいです... "store" 。 Verboseの名前はPythonコード内にのみ存在します。これらはデータベースには何も格納されません。 – John