Skip to content

Commit 8e59af4

Browse files
committed
N fix
1 parent c943697 commit 8e59af4

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

md/160-评论的评论.md

+9-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
但有的时候读者和读者同样需要沟通,评论别人的评论,俗称**多级评论**
44

5-
要做好多级评论是个复杂的工程,本章将实现其最基础的功能。
5+
本章将实现基础的多级评论功能。
6+
7+
> 准确的讲是两级评论。
68
79
## 模型
810

@@ -26,7 +28,7 @@ class Comment(models.Model):
2628
```
2729

2830
- 一个父评论可以有多个子评论,而一个子评论只能有一个父评论,因此用了一对多外键。
29-
- 之前的一对多外键,第一个参数直接引用了对应的模型,但是这里显然不能够自己引用自己,因此用了传递字符串 `self` 的方式,作用都是一样的。
31+
- 之前的一对多外键,第一个参数直接引用了对应的模型,但是由于语法规则限制,这里显然不能够自己引用自己,因此用了传递字符串 `self` 的方式,作用都是一样的。
3032

3133
进行迁移后,模型就改好了。
3234

@@ -74,9 +76,9 @@ class CommentSerializer(serializers.ModelSerializer):
7476

7577
新增代码大致可以分为三块,让我们来拆解它们:
7678

77-
- 为了让文章引用更人性化,将 `article` 改为超链接字段用了 `HyperlinkedRelatedField` ,它和之前用过的 `HyperlinkedIdentityField` 差别很小,你可以简化理解为 `HyperlinkedRelatedField` 用于对外键关系,而 `HyperlinkedIdentityField` 用于对自身。(正确的理解[看这里](https://stackoverflow.com/questions/31566675/for-django-rest-framework-what-is-the-difference-in-use-case-for-hyperlinkedrel)
79+
- 为了让文章引用更人性化,将 `article` 改为超链接字段用了 `HyperlinkedRelatedField` ,它和之前用过的 `HyperlinkedIdentityField` 差别很小,你可以简化理解为 `HyperlinkedRelatedField` 用于对外键关系,而 `HyperlinkedIdentityField` 用于对当前模型自身。(完整的解释[看这里](https://stackoverflow.com/questions/31566675/for-django-rest-framework-what-is-the-difference-in-use-case-for-hyperlinkedrel)
7880
- `parent` 为父评论,用了嵌套序列化器 `CommentChildrenSerializer` 。注意这个序列化器的 `Meta``exclude` 来定义不需要的字段。
79-
- 由于我们希望父评论只能在创建时定义,后续不能更改(很合理),因此覆写 `def update(...)` ,使得在更新评论时忽略掉 `parent_id` 参数。
81+
- 由于我们希望父评论只能在创建时被关联,后续不能更改(很合理),因此覆写 `def update(...)` ,使得在更新评论时忽略掉 `parent_id` 参数。
8082

8183
这就完成了。接下来测试。
8284

@@ -122,7 +124,9 @@ HTTP/1.1 201 Created
122124
如果我想在更新评论内容的同时修改父评论:
123125

124126
```python
125-
...> http -a Obama:admin123456 PUT http://127.0.0.1:8000/api/comment/21/ parent_id=99 article_id=2 content='comment to parent comment 10' HTTP/1.1 200 OK
127+
...> http -a Obama:admin123456 PUT http://127.0.0.1:8000/api/comment/21/ parent_id=99 article_id=2 content='comment to parent comment 10'
128+
129+
HTTP/1.1 200 OK
126130
...
127131
{
128132
...

md/40-序列化器与视图函数.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class ArticleListSerializer(serializers.Serializer):
1818
```python
1919
# article/serializers.py
2020

21-
rom rest_framework import serializers
21+
from rest_framework import serializers
2222
from article.models import Article
2323

2424
# 父类变成了 ModelSerializer

0 commit comments

Comments
 (0)