gpt4 book ai didi

python - 使用 django-mptt 进行嵌套评论系统时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:25 24 4
gpt4 key购买 nike

我正在尝试使用 django-mptt 设置一个简单的嵌套评论系统,但遇到了一些问题。如果有人可以看一下并告诉我我做错了什么,我将非常感激。

到目前为止,我只设置了特定帖子的评论显示;任何创建/更新/删除操作暂时都是通过管理员进行的。我遇到的问题之一是,有时当我尝试在管理员中创建/更新/删除时,我会收到属性错误“'NoneType'对象没有属性'tree_id'”。另一个是,当我导航到应该的页面时,通过管理员更改注释实例上“order_insertion_by”(“点”字段)中指定的字段的整数值有时会导致 ValueError“cache_tree_children 以错误的顺序传递节点”显示帖子和评论。

此外,有时某些评论会出现在错误的父级下,有时根本不会出现。

以下是我的评论模型的相关部分:

class Comment(MPTTModel):
posting = models.ForeignKey(Posting)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
points = models.IntegerField(
default=0,
)

class MPTTMeta:
order_insertion_by = ['points']

以及我用来显示特定帖子的评论的模板的相关部分:

{% load mptt_tags %}
{% with posting.comment_set.all as comments %}
<ul class="root">
{% recursetree comments %}
<li>
{{ node.message }}
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
{% endwith %}

最后,我的整个 admin.py 文件,因为我觉得部分问题可能是由我通过管理更改内容引起的:

from django.contrib import admin
from django.forms import ModelForm, Textarea
from postings.models import Posting, Comment

class PostingForm(ModelForm):

class Meta:

model = Posting
widgets = {
'title': Textarea(attrs={'cols': 75, 'rows': 5}),
'message': Textarea(attrs={'cols': 75, 'rows': 15}),
}

class CommentForm(ModelForm):

class Meta:

model = Comment
widgets = {
'message': Textarea(attrs={'cols': 75, 'rows': 15}),
}

class CommentInline(admin.TabularInline):
model = Comment
form = CommentForm

class PostingAdmin(admin.ModelAdmin):
inlines = [CommentInline]
list_display = ('title', 'posted', 'variety', 'points', 'user')
form = PostingForm

admin.site.register(Posting, PostingAdmin)

非常感谢您对此提供的任何帮助。

最佳答案

在这方面,我从出色的软件包作者 Craig de Stigter 那里得到了一些帮助。似乎问题是由于我在更改特定注释的 order_insertion_by 字段(“点”)后没有在模型树上使用 rebuild() 引起的。

根据他的建议,我修改了评论模型表单的 save() 方法以包含模型的重建:

def save(self, *args, **kwargs):
Comment.objects.rebuild()
return super(CommentForm, self).save(*args, **kwargs)

关于python - 使用 django-mptt 进行嵌套评论系统时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com