Джанго sitemap (карта сайта) вложенные url

Сижу над sitemap уже 3 дня. Пробовал разные схемы, но толком ни чего не нашел.

Все что есть на просторах интернета описано в моем примере ниже в функции Sitemap - это не подходит.

Нужно чтоб в карту сайта выводились url с вложенностью —

http://example.com/categories/,

http://example.com/categories/category-1/,

http://example.com/categories/category-1/post-1,

http://example.com/categories/category-2/

http://example.com/categories/category-2/post-2-1,

Ни чего подобного в решении такой реализации sitemap я не нашел ни в ютуб ни в документации ни на просторах google. Искал как на русском языке, так и на английском.

Те кто знает, подскажите как это реализовать. Заранее спасибо!

Models

class home(models.Model):
    slug = models.SlugField(max_length=266, unique=True, db_index=True, verbose_name=('SLUG'))
    ...
    published = models.DateTimeField(default=timezone.now, verbose_name="Опубликовать",)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    
    def __str__(self):
        return self.slug
    


class categories(models.Model):
    slug = models.SlugField(max_length=266, unique=True, db_index=True, verbose_name=('SLUG'))
    ...
    published = models.DateTimeField(default=timezone.now, verbose_name="Опубликовать",)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.slug
    
    def get_absolute_url(self):
        return reverse('categories', kwargs={'categories_slug': self.slug })


        
class category(models.Model):
    slug = models.SlugField(max_length=266, unique=True, db_index=True, verbose_name=('SLUG'))
    ...
    published = models.DateTimeField(default=timezone.now, verbose_name="Опубликовать",)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    cat = models.ForeignKey('categories', on_delete=models.PROTECT, null=True)

    def __str__(self):
        return self.slug

    def get_absolute_url(self):
        return reverse('category', kwargs={'categories_slug': self.slug,'category_slug': self.slug, 'post_slug': self.slug})


class post(models.Model):
    slug = models.SlugField(max_length=266, unique=True, db_index=True, verbose_name=('SLUG'))
    ...
    published = models.DateTimeField(default=timezone.now, verbose_name="Опубликовать",)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    cat = models.ForeignKey('category', on_delete=models.PROTECT, null=True)

    def __str__(self):
        return self.slug
      
    def get_absolute_url(self):
        return reverse('post', kwargs={'categories_slug': self.slug, 'category_slug': self.slug, 'post_slug': self.slug, })
 

views

def ContentHome(request):
    homepages=home.objects.all()
    return render(request, 'content/home.html',{
        'home':homepages, })
        
def categories(request):
    categories=categories.objects.all()
    return render(request, 'content/categories.html',{  
        'categories':categories, })

def category(request, category_slug):
    category=category.objects.filter( slug=category_slug)
    get_list_or_404(categoriy, slug=categoriy_slug)
    return render(request, 'content/category.html',{ 
        'category':category, 
        })
        
def post(request, category_slug, post_slug):
    post = post.objects.filter(slug=post_slug, cat__slug=category_slug)
    current_post = get_object_or_404(post, slug=post_slug, cat__slug=category_slug)
    previous_post = post.objects.filter(cat__slug=category_slug, pk__lt=current_post.pk).order_by('-pk').first()
    next_post = post.objects.filter(cat__slug=category_slug, pk__gt=current_post.pk).first()
    
    
return render(request, 'content/post.html', {
        'post': post,
        'current_post': current_post,
        'previous_post': previous_post,
        'next_post': next_post,
        'post':current_post,

})

    May URL
    ...
    from django.contrib.sitemaps.views import sitemap 
    from content.sitemaps import Sitemap
    
    sitemaps={
     'pagese3': Sitemap3,
     'pagese2': Sitemap2,
     'pagese1': Sitemap1,
     'pagese': Sitemap,

     }
    
    path('', views.ContentHome, name='homepage'),
    path('categories', views.categories, name='categories'),
    path('categories/<slug:category_slug>', views.category, name='category-detail'),
    path('categories/<slug:category_slug>/<slug:post_slug>', views.post, name='post-detail'),
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap')
    
    sitemaps.py
    
    from django.contrib.sitemaps import Sitemap
    from django.http import HttpResponse
    from .models import *


class Sitemap3(Sitemap):
    changefreq = "weekly"
    priority = 0.5
    protocol = 'http'
    
    
    def items(self):
        return home.objects.all()
        
    def lastmod(self, obj):
        return obj.published
    
    def location(self,obj,):
        return (f"/")


class Sitemap2(Sitemap):
    changefreq = "weekly"
    priority = 0.5
    protocol = 'http'
    
    
    def items(self):
        return categories.objects.all()
        
    def lastmod(self, obj):
        return obj.published
    
    def location(self,obj,):
        return (f"/{obj.slug}/")




class Sitemap1(Sitemap):
    changefreq = "weekly"
    priority = 0.5
    protocol = 'http'
    
    
    def items(self):
        return category.objects.all()
        
    def lastmod(self, obj):
        return obj.published
    
    def location(self,obj,):
        return (f"/{obj.cat.slug}/{obj.slug}")
    


class Sitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.5
    protocol = 'http'
    

    def items(self):
        return post.objects.all()
        
    def lastmod(self, obj):
        return obj.published
    
    def location(self,obj,):
        return (f"/categories/{obj.cat.slug}/{obj.slug}")
            
    Выводит страницу - это не правильно:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://example.com/</loc>
<lastmod>2023-03-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>http://example.com/categories/</loc>
<lastmod>2023-03-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>http://example.com/categories/category-1</loc>
<lastmod>2023-03-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>http://example.com/categories/category-2</loc>
<lastmod>2023-03-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>http://example.com/categories/category-1/post-1</loc>
<lastmod>2023-03-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>http://example.com/categories/category-1/post-2</loc>
<lastmod>2023-03-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>http://example.com/categories/category-1/post-3</loc>
<lastmod>2023-03-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>http://example.com/categories/category-2/post-2-1</loc>
<lastmod>2023-03-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
    
    Нужно чтоб выводил
        <url>
        <loc>http://example.com/categories</loc>
        <lastmod>2023-03-11</lastmod>
        <loc>http://example.com/categories/category-1/</loc>
        <lastmod>2023-03-11</lastmod>
        <loc>http://example.com/categories/category-1/post-1.</loc>
        <lastmod>2023-03-11</lastmod>
        <loc>http://example.com/categories/category-1/post-2.</loc> 
        <lastmod>2023-03-11</lastmod>
        
        <loc>http://example.com/categories/category-2/</loc>
        <lastmod>2023-03-11</lastmod>
        <loc>http://example.com/categories/category-2/post-2-1.</loc>
        <lastmod>2023-03-11</lastmod>       
        <changefreq>weekly</changefreq>
        <priority>0.5</priority>
        </url>
        <url>
        <loc>http://example.com/category/post-2.</loc>
        <lastmod>2023-03-11</lastmod>
        <changefreq>weekly</changefreq>
        <priority>0.5</priority>
        </url>
        </urlset>

Ответы (0 шт):