(對不起,我的英語)Django Threaded Commenting System
我正在學習Python和Django。現在,我的challange正在開發線程通用評論系統。有兩種模式,發佈和評論。
-Post可以評論。
- 評論可以評論。 (無盡/螺紋)
- 不應該是系統中的n + 1查詢問題。 (不管有多少意見,不應該增加查詢的數量)
我現在的機型都是這樣的:
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
child = generic.GenericRelation(
'Comment',
content_type_field='parent_content_type',
object_id_field='parent_object_id'
)
class Comment(models.Model):
content = models.TextField()
child = generic.GenericRelation(
'self',
content_type_field='parent_content_type',
object_id_field='parent_object_id'
)
parent_content_type = models.ForeignKey(ContentType)
parent_object_id = models.PositiveIntegerField()
parent = generic.GenericForeignKey(
"parent_content_type", "parent_object_id")
是我的模型嗎?我怎樣才能得到所有評論(層次結構)的職位,沒有n + 1查詢問題?
注:我知道mttp和其他模塊,但我想學習這個系統。
編輯:我跑「Post.objects.all().prefetch_related("child").get(pk=1)
」命令,這給了我職位及其子評論。但是當我想要獲取子命令的子命令時,新的查詢正在運行。我可以將命令更改爲...prefetch_related("child__child__child...")...
,然後再爲每個子父母關係的深度運行一個新的查詢。有沒有人有解決這個問題的想法?