2012-12-30 11 views
8

Ich mag Sitemap-Generation in Django ermöglichen, so dass ich die folgenden, wie es hereget_absolute_url - Django`s Sitemap

Modell erklärt:

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

Urls:

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

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

Aber ich habe einen Fehler auf /sitemap.xml: 'Auto' Objekt hat kein Attribut 'get_absolute_url. Wie man es repariert? Ich muss einige Klassen erstellen, wie es erklärt ? Oder kann ich nur GenericSitemap verwenden? Ich habe 'flatpages' kommentiert, weil ich sie nicht benutze. Vielen Dank.

Update 1: in URLS.py:

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

Antwort

12

Sie haben get_absolute_url für das Modell zu definieren:

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

der URL-Umkehrverfahren Bitte aktualisieren Sie nach der URL, die Sie definiert haben.

+0

'car_details' - es ist ein Teil von url (site.com/car_details)? – tim

+0

Keine 'car_details' ist der URL-Name. Kannst du bitte "urls.py" posten, damit ich dir weiterhelfen kann, brauche ich die URL für das Automodell, wie du es in deinem urls.py definiert hast? –

+0

oh, danke, ich lese [link] (https://docs.djangoproject.com/de/dev/ref/models/instances/?from=olddocs#get-absolute-url) und dein Code hilft mir aber ich Benutze return "/ car /% i /"% self.id und seine Arbeit. Vielen Dank. – tim