微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何通过 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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?