2012-12-30 22 views
8

Ben Django site haritasını nesil etkinleştirmek istediğiniz, bu yüzden hereget_absolute_url - Django`s site haritası

modeli açıkladı nasıl aşağıdakileri yapın:

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

URL'ler:

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

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

Fakat /sitemap.xml dosyasında bir hata var: 'Araba' nesnesinde 'get_absolute_url özniteliği yok. Nasıl düzeltilir? Bazı dersler oluşturmam gerekiyor, nasıl açıkladı ? Ya da sadece GenericSitemap kullanabilir miyim? 'Flatpages' yorumunu yaptım çünkü onları kullanmıyorum. Teşekkürler.

Güncelleme 1: urls.py içinde :

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

cevap

12

Sen model için get_absolute_url tanımlamak zorunda:

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

tanımladığınız URL'ye göre URL ters yönteminizi güncelleyin.

+0

'car_details' - url'nin bir parçası (site.com/car_details)? – tim

+0

Hayır 'car_details' url adıdır. Size daha fazla yardımcı olabilmemiz için 'urls.py' mesajını gönderebilir misiniz? Araç modeli için url'ye urls.py dosyasında nasıl tanımladığınıza ihtiyacınız var mı? –

+0

oh, teşekkürler, [link] okudum (https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#get-absolute-url) ve kodunuz bana yardımcı olur) ama ben "/ car /% i /"% self.id iadesini ve çalışmasını kullanın. Teşekkürler. – tim

İlgili konular