Django URL 鼻涕虫

Django URL Slugs

我有一个评论和一个 post 模型。

我希望 URL 以 /post//comment//

的形式出现

但我不确定如何设置它。

我的 Post 模型有这个:

@python_2_unicode_compatible
class Post(models.Model):
    ...
    slug = models.SlugField(unique=True)

    @models.permalink
    def get_absolute_url(self):
        return 'appname:post', (self.slug,)

我的评论模型可以有:

@python_2_unicode_compatible
class Comment(models.Model):
    ...
    slug = models.SlugField(unique=True)

    @models.permalink
    def get_absolute_url(self):
        return 'appname:post:comment', (self.slug,)

或者我如何连接 get_absolute_url 以便 url 以我提到的方式出现?或者有更好的方法吗?

@python_2_unicode_compatible
class Comment(models.Model):
    title = models.CharField(max_length=100)
    body = models.CharField(max_length=1000)
    creation_date = models.DateTimeField(auto_now_add=True)
    last_updated = models.DateTimeField()
    author = models.ForeignKey(Person, related_name='authors')
    project = models.ForeignKey(Project, related_name='comments', null=True, blank=True)
    task = models.ForeignKey(Task, related_name='comments', null=True, blank=True)
    slug = models.SlugField(unique=True)

    def __str__(self):
        return self.title    

    @models.permalink
    def get_absolute_url(self):
        if self.project:
            return ('comment', (), {
                'project': self.task.id,
                'slug': self.slug,
                'id': self.id,
            })            
        elif self.task:
            return ('comment', (), {
                'project': self.task.project.id,
                'task': self.task.id,
                'slug': self.slug,
                'id': self.id,
            })

然后连接 urls.py 为名为 'comment'

的 url 使用所有必要的 ID