/'dict' 对象的 AttributeError 没有属性 '_mptt_meta'

问题描述

我尝试使用帖子和 MPTT 评论来构建博客,这将在主视图 www.mysite.com 中,这意味着我无法将 pk 传递给 url,因此我尝试使用 for 循环获取帖子对象

    comma = Post.objects.all()
    comm = []
    for post in comma:
        comment = PostCommentIDF.objects.filter(post=post)
        comm.append({"comme": comment}

   context = {'comment': comm,}
   return render(request,'personal/home.html',context)

还有我的 Mptt 评论模型

class PostCommentIDF(MPTTModel):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='pos_com')
    parent = TreeForeignKey('self',null=True,blank=True,related_name='post_children')
    author = models.ForeignKey(Account,on_delete=models.CASCADE)
    content = models.TextField()
    created_date = models.DateTimeField(auto_Now_add=True)
    status = models.BooleanField(default=True)
    likes = models.ManyToManyField(Account,related_name='pos_com')

我的帖子模型

class Post(models.Model):
    author = models.ForeignKey(Account,on_delete=models.CASCADE)
    article = models.TextField(null=True,blank=True)
    photo_article = models.ImageField(max_length=255,upload_to=get_poster_filepath)

我在模板中的 mptt 评论

   {% recursetree comment %}
      <div id="{{ node.id }}" class="my-2 p-2" style="border: 0px solid grey">
          <div class="d-flex justify-content-between">
              {{ node.publish|naturaltime }}
              <div class="node-content mt-3">{{ node.content  }}</div>
          </div>
      </div>
   {% endrecursetree %}

解决方法

comment 在您的模板上下文中是一个字典列表。它应该是一个 PostCommentIDF 实例列表。而且您正在执行多个 SQL 查询,这确实效率低下。改用 __in 运算符并直接使用查询集,它也是可迭代的:

comma = Post.objects.all()
comment = PostCommentIDF.objects.filter(post__in=comma)

context = {'comment': comment,}
return render(request,'personal/home.html',context)

相关问答

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