2014-09-21 3 views
0

Я пытаюсь реализовать карту сайта для своих моделей. Но он показывает только ссылки для любой модели. Я должен прокомментировать клинику, чтобы показать ссылки для врача и вице-верки.django 1.6 Карта сайта не работает должным образом

Вот models.py

class Clinic(models.Model): 
    name = models.CharField(max_length=500) 
    slug = models.CharField(max_length=200, blank = True, null = True, unique = True) 
    contact_no = models.IntegerField() 
    submitted_on = models.DateTimeField(auto_now_add=True, null = True, blank = True) 

    def save(self, *args, **kwargs): 
     self.slug = slugify(self.name) 
     super(Clinic, self).save(*args, **kwargs) 

    def get_absolute_url(self): 
     from django.core.urlresolvers import reverse 
     return reverse('meddy1.views.clinicProfile', args=[str(self.slug)]) 

    def __unicode__(self): 
     return u"%s %s" % (self.name, self.contact_no) 

class Doctor(models.Model): 
    name = models.CharField(max_length=1300) 
    title = models.CharField(max_length=1300, null = True, blank = True) 
    specialization = models.ForeignKey(Specialization) 
    clinic = models.ForeignKey(Clinic) 
    education1 = models.CharField(max_length=1300) 

    def __unicode__(self): 
     return u"%s %s" % (self.name, self.specialization) 

    def get_absolute_url(self): 
     from django.core.urlresolvers import reverse 
     return reverse('meddy1.views.showDocProfile', args=[str(self.id)]) 

есть ли что-нибудь сделать с тем, что клиника является внешним ключом в доктора модели?

urls.py

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
from django.views.generic import TemplateView 
from meddy1.models import * 
from django.contrib.sitemaps import GenericSitemap 

from django.contrib.sitemaps.views import sitemap 

from meddy1.sitemap import * 

from meddy1 import views 


admin.autodiscover() 


info_dict = { 
    'queryset': Doctor.objects.all(), 
    # 'queryset': Clinic.objects.all(), 
    'date_field': 'submitted_on', 
} 

sitemaps = { 
    'doctor': GenericSitemap(info_dict, priority=0.6), 
    'static': StaticViewSitemap, 
    'clinic': GenericSitemap(info_dict, priority=0.6), 
} 

urlpatterns = patterns('', 
    url(r'^', include('meddy1.urls')), 
    url(r'^', include('django.contrib.auth.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^robots\.txt$', TemplateView.as_view(template_name="meddy1/robots.txt")), 
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}), 

sitemap.py

from django.contrib.sitemaps import Sitemap 
from django.core.urlresolvers import reverse 

from meddy1.models import * 

class DoctorSitemap(Sitemap): 
    changefreq = "weekly" 
    priority = 0.5 

    def items(self): 
     return Doctor.objects.all() 

    def lastmod(self, obj): 
     return obj.submitted_on 


class ClinicSitemap(Sitemap): 
    changefreq = "weekly" 
    priority = 0.5 

    def items(self): 
     return Clinic.objects.all() 

    def lastmod(self, obj): 
     return obj.submitted_on 

class StaticViewSitemap(Sitemap): 
    priority = 0.5 
    changefreq = 'weekly' 

    def items(self): 
     return ['index', 'about', 'privacy','terms', 'login', 'signup'] 

    def location(self, item): 
     return reverse(item) 

С выше кода он показывает карта сайта ссылки для статической страницы и доктора модели.

ответ

1

Вы используете один и тот же dict для обоих файлов Sitemap, поэтому вы видите те же ссылки. GenericSitemap - это ярлык, который использует атрибут queryset данного dict.

Но я также удивляюсь, почему вы не используете свои расширенные классы Sitemap?

Смежные вопросы