モデルマネージャーでカスタム関数を作成しようとしています:
class MessageManager(models.Manager):
# Return body from last child message
def get_last_child_body(self):
if self.has_childs:
last_child = self.filter(parent_msg=self.id).order_by('-send_at')[0]
return last_child.body
テンプレートでこの関数 (「get_last_child_body」) を使用したい
{% message.get_last_child_body %}
テーブルメッセージに挿入された最後の子メッセージから本文を取得します。
メッセージ モデル:
class Message(models.Model):
sender = models.ForeignKey(User, related_name='sent_messages')
recipient = models.ForeignKey(User, related_name='received_messages')
parent_msg = models.ForeignKey('self', related_name='next_messages', null=True, blank=True)
has_childs = models.BooleanField()
subject = models.CharField(max_length=120)
body = models.TextField()
send_at = models.DateTimeField()
read_at = models.DateTimeField(null=True, blank=True)
replied_at = models.DateTimeField(null=True, blank=True)
sender_deleted_at = models.DateTimeField(null=True, blank=True)
recipient_deleted_at = models.DateTimeField(null=True, blank=True)
objects = MessageManager()
def get_last_child(self):
if not self.has_childs:
return None
class Meta:
get_latest_by = 'send_at'
ordering = ['-send_at']
まあ、問題はマネージャーのカスタム関数の「id」にあると思います。親メッセージIDを渡す必要がありますが、どうすればよいかわかりません。
エラーは報告されず、テンプレートに何も表示されません。
何か案は?