2012-12-30 14 views
8

Chcę włączyć sitemap generacji w Django, więc należy wykonać następujące czynności, jak to wyjaśniono hereget_absolute_url - Django`s sitemap

modelu:

class Car(models.Model): 
    def __unicode__(self): 
      return self.name 
    name = models.CharField('Name', max_length=10) 
    active = models.BooleanField() 

adresów URL:

car_dict = { 
    'queryset': Car.objects.filter(active=1), 
} 

sitemaps = { 
    #'flatpages': FlatPageSitemap, 
    'car': GenericSitemap(car_dict, priority=0.5), 
} 

Ale mam błąd w /sitemap.xml: Obiekt "Samochód" nie ma atrybutu "get_absolute_url. Jak to naprawić? Muszę stworzyć kilka klas, jak wyjaśnił ? Czy mogę użyć tylko GenericSitemap? Skomentowałem "płaskie", ponieważ ich nie używam. Dzięki.

Aktualizacja 1: w urls.py:

url(r'^car/$', 'cars.views.shop'), 
    url(r'^car/(?P<car_id>\d+)/$', 'cars.views.producer'), 

Odpowiedz

12

Trzeba zdefiniować get_absolute_url dla modelu:

from django.core.urlresolvers import reverse 

class Car(models.Model): 
    name = models.CharField('Name', max_length=10) 
    active = models.BooleanField() 

    def __unicode__(self): 
     return self.name 

    def get_absolute_url(self): 
     return reverse('car_details', kwargs={'name':self.name}) 

Proszę zaktualizować metodę odwrotną URL według adresu URL zostały zdefiniowane.

+0

"car_details" - jest częścią adresu URL (site.com/car_details)? – tim

+0

Żadne 'car_details' nie jest nazwą url. Czy możesz napisać "urls.py", abym mógł ci bardziej pomóc? Potrzebuję adresu URL do modelu samochodu, jak zdefiniowałeś go w swoim urls.py? –

+0

oh, dziękuję, czytam [link] (https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#get-absolute-url) i twój kod mi pomaga), ale ja użyj return "/ car /% i /"% self.id i jego pracy. Dzięki. – tim