2012-12-30 9 views
8

voglio consentire sitemap generazione in Django, quindi effettuare le seguenti operazioni, come spiegato hereget_absolute_url - Django`s sitemap

modello:

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

gli URL:

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

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

Ma ho un errore su /sitemap.xml: L'oggetto 'Car' non ha attributo 'get_absolute_url. Come sistemarlo? Devo creare alcune classi, come ha spiegato ? Oppure posso usare solo GenericSitemap? Ho commentato 'flatpage', perché non li uso. Grazie.

Update 1: in URLS.py:

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

risposta

12

è necessario definire get_absolute_url per il modello:

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

Si prega di aggiornare il metodo URL inverso secondo l'URL è stato definito.

+0

'car_details' - fa parte di url (site.com/car_details)? – tim

+0

No 'car_details' è il nome dell'URL. Puoi per favore postare 'urls.py' in modo che io possa aiutarti di più, ho bisogno dell'url per il modello Car come l'hai definito nel tuo urls.py? –

+0

oh, grazie, ho letto [link] (https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#get-absolute-url) e il tuo codice mi aiuta) ma io usa return "/ car /% i /"% self.id e il suo lavoro. Grazie. – tim