2016-05-24 3 views
0

Ich habe einen Kommentar und ein Post-Modell.Django URL Slugs

Ich möchte die URL kommen als/post // Kommentar //

Aber ich bin nicht sicher, wie dies einzurichten.

My Post-Modell hat dies:

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

kann mein Kommentar Modell hat:

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

oder wie ich get_absolute_url tun Haken, so dass die URL den Weg kommt heraus, dass ich erwähnt? oder gibt es einen besseren Weg?

Antwort

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

und dann die urls.py anschließen, um alle notwendigen IDs für den ‚Kommentar‘ genannt url verwenden