2016-05-24 4 views
0

У меня есть комментарий и модель публикации.Django URL Slugs

Я хочу, чтобы URL, чтобы выйти, как/пост // комментарий //

Но я не уверен, как задать этот вопрос.

Мои сообщения модель это:

@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 выходит так, как я уже говорил? или есть лучший способ?

ответ

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

, а затем подключить к urls.py использовать все необходимые идентификаторы для URL с именем «комментарий»

Смежные вопросы