Добавить только URL-адреса, имеющие записи, в карту сайта - PullRequest
0 голосов
/ 30 ноября 2010

Я пытаюсь добавить несколько пользовательских URL-адресов, связанных с одним представлением, при этом передаваемые параметры будут разными.Например, у меня будет несколько URL-адресов для получения всех записей определенного производителя, поэтому это будет <root_url>/vehicles/inventory/<make>.Что я хочу сделать, если убедиться, что URL действительно возвращают некоторые записи ... только те, которые делают, должны будут перейти на карту сайта.

Вот как я сделал класс для всех марок в определенномгод (но некоторые URL-адреса не возвращают никаких транспортных средств, и я хочу исключить это).

class YearMakeSitemap(Sitemap):
  priority = 1.0
  changefreq = 'weekly'

  def items(self):
    makes = query.order_by('manufacturer_popularity', 'manufacturer').values_list
            ('manufacturer', flat = True)
    years = query.order_by('year').values_list('year', flat = True)
    url = []

    for make in makes:
        for year in years:
            url.append('%s/%s' % (make, year))

    return url

  def lastmod(self, obj):
    return datetime.now()

  def location(self, obj):
    return '/vehicles/inventory/%s/' % obj

Как может быть файл Sitemap, содержащий только URL-адреса, которые возвращают хотя бы одну запись в противоположностьв моей нынешней ситуации?

1 Ответ

0 голосов
/ 01 декабря 2010

Как насчет этого изменения?

for make in makes:
    for year in years:
        if query.filter(year=year,manufacturer=make).count() > 0:
            url.append('%s/%s' % (make, year))

Но я думаю, что более эффективным ответом было бы сделать это:

query.order_by ("Manufacturer_popularity", "Manufacturer", "year "). Значения (" производитель "," год "). Different ()

и итерация по этому списку.

...