如何通过 mptt 在我的视图函数中创建面包屑

问题描述

如何在我的视图函数中创建面包屑?

class Category(MPTTModel):
    name = models.CharField(max_length=50,unique=True)
    parent = TreeForeignKey('self',on_delete=models.CASCADE,null=True,blank=True,related_name='children')
    slug = models.SlugField( null=True,blank=True)
    description = models.TextField(null=True,blank=True)
    image = models.ImageField(
        upload_to=user_directory_path,default='posts/default.jpg')
     

    def get_absolute_url(self):
        return reverse('Category:post_single',args=[self.slug])

    class Meta:
        ordering = ('-name',)

    def __str__(self):
        return self.name

        
class Post(models.Model):

    class NewManager(models.Manager):
        def get_queryset(self):
            return super().get_queryset() .filter(status='published')

    options = (
        ('draft','Draft'),('published','Published'),) 
    category = TreeForeignKey('Category',blank=True)
    title = models.CharField(max_length=250)
    excerpt = models.TextField(null=True)
    image = models.ImageField(
        upload_to='uploads/',default='posts/default.jpg')
    image_caption = models.CharField(max_length=100,default='Photo by Blog')
    slug = models.SlugField(max_length=250,unique_for_date='publish')
    publish = models.DateTimeField(default=timezone.Now)
    author = models.ForeignKey(
        User,related_name='blog_posts')
    content = models.TextField()
    status = models.CharField(
        max_length=10,choices=options,default='published')
    favourites = models.ManyToManyField(
        User,related_name='favourite',default=None,blank=True)
    likes = models.ManyToManyField(
        User,related_name='like',blank=True)
    like_count = models.BigIntegerField(default='0')
    views = models.PositiveIntegerField(default=0)


    thumbsup = models.IntegerField(default='0')
    thumbsdown = models.IntegerField(default='0')
    thumbs = models.ManyToManyField(User,related_name='thumbs',blank=True)

    objects = models.Manager()  # default manager
    newmanager = NewManager()  # custom manager

    def get_absolute_url(self):
        return reverse('blog:post_single',args=[self.slug])

    class Meta:
        ordering = ('-publish',)

    def __str__(self):
        return self.title




#views

   def post_single(request,post):

    post = get_object_or_404(Post,slug=post,status='published')
    postcat = Post.objects.filter(category=post.category)

    fav = bool

    if post.favourites.filter(id=request.user.id).exists():
        fav = True

    allcomments = post.comments.filter(status=True)
    page = request.GET.get('page',1)

    paginator = Paginator(allcomments,10)
    try:
        comments = paginator.page(page)
    except PageNotAnInteger:
        comments = paginator.page(1)
    except EmptyPage:
        comments = paginator.page(paginator.num_pages)

    user_comment = None

    if request.method == 'POST':
        comment_form = NewCommentForm(request.POST)
        if comment_form.is_valid():
            user_comment = comment_form.save(commit=False)
            user_comment.post = post
            user_comment.save()
            return HttpResponseRedirect('/' + post.slug)
    else:
        comment_form = NewCommentForm()

    session_key = 'view_post_{}'.format(post)
    if not request.session.get(session_key,False):
        post.views +=1
        post.save()
        request.session[session_key] = True
    return render(request,'blog/single.html',{'post': post,'Category': Category.objects.all(),'Category2': postcat,'comments':  user_comment,'comments': comments,'comment_form': comment_form,'allcomments': allcomments,'fav': fav})

博客/single.html

{{ node.name }}

我想在我的单个帖子信息 (post_single) 面包屑中添加类别。像这样:类别 > 子类别 > 子子类别 .,

有人告诉我使用 get_ancestors:

示例:

<nav aria-label="breadcrumb">
  <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/">?</a></li>
{% for node in post.category.ancestors %}
<li class="breadcrumb-item"><a href="{{node.get_absolute_url}}">{{node.name}}</a></li>
    {% endfor %}
<li class="breadcrumb-item active" aria-current="page">{{ object }}</li>
  </ol>
</nav>

{{ post.category }} 如何用我的模型实现这一点?

谢谢。我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...