1

私はウィキを構築しており、各ウィキページに加えられたすべてのリビジョンを保存する必要があります。これは、作成されたウィキページごとに新しい改訂表が必要であることを意味します。

各ウィキページ テンプレートを DetailView で提示する場合、Wikipage.title、最新のリビジョンとその Revision.content、Revision.author、Revision.last_edit、および Revision.comment にアクセスする必要があります。「モデル=ウィキページ」と「モデル=リビジョン」を設定することでタイトルにアクセスできましたが、両方を同時に設定することはできませんでした。

models.py

class Wikipage(models.Model):
    title = models.CharField(max_length=100)
    date_created = models.DateTimeField('Created', auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = "Wikipages"


class Revision(models.Model):
    wikipage = models.ForeignKey(Wikipage, null=True, 
               on_delete=models.CASCADE, related_name='revision')
    content = models.TextField('Content')
    author = models.ForeignKey(User, null=True, 
             on_delete=models.SET_NULL)
    last_edit = models.DateTimeField('Last edit', auto_now=True)
    comment = models.TextField('Comment', blank=True)

    class Meta:
        verbose_name = 'Revision'
        verbose_name_plural = 'Revisions'
        ordering = ['-last_edit']
        get_latest_by = ['last_edit']

    def __str__(self):
        return self.content

django に付属の DetailView と CreateView を使いたかったのですが、両方のテーブルから特定のデータにアクセスすることに成功していません。ListView が正しく機能するようになりましたが、Wikipage のタイトルのみが必要で、Revision のタイトルは必要ありません。

4

2 に答える 2