2010-11-30 10 views
0

いくつかのカスタムURLを追加しようとしていますが、すべてが1つのビューにリンクされ、渡されるパラメータは異なります。一例として、私は特定のメークを持つすべてのレコードをプルアップするためにいくつかのURLを持っているので、それは<root_url>/vehicles/inventory/<make>になります。 URLで実際にいくつかのレコードが返されるようにするにはどうすればよいのですか?サイトマップに移動する必要があるものだけです。サイトマップにレコードを持つ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 

現在の状況ではなく、少なくとも1つのレコードを返すURLだけを持つサイトマップファイルを作成するにはどうすればよいですか?

答えて

0

この変更はどうですか?

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"、 "メーカー"、 "年")の値( "メーカー"、 "年" ).distinct()

このリストを繰り返します。

+0

クール...私はより多くのフィールドで同じことをやっているので、よりエレガントで効率的なように見えるので、2番目の提案を試してみます – Stephen

関連する問題