2016-05-24 12 views
0

コメントと投稿モデルがあります。Django URLスラッグ

私はURLをポスト//コメント//

/として出てくるしたいしかし、私はこれを設定する方法がわからないと思います。

マイ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,) 

やURLは、私が言及した道を出てくるように、どのように私ははget_absolute_urlをフックしますか?それとも良い方法がありますか?その後、

答えて

0
@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, 
      }) 

と「コメント」

という名前のURLのために必要なすべてのidを使用するurls.pyをフックアップ
関連する問題