现在有一个基本用户 model。已经在 model 里面设置了用户关系:
class User(models.Model):
username = CharField()
followers = ManyToManyField(
'self',
related_name="fans", symmetrical=False, )
用户的 serializer 已经写好:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
field = ('id', 'username', )
User 的 list view 和 detail view 都没有问题。
我已经实现过了。
我现在想要实现用户关系的 API
那么假如获取用户关系的 API 为:
urlpatterns += [
path("/api/users/<int:user_id>/<str:relationship>/", views.RelationshipList.as_view(), ),
]
那么 views 中的 RelationshipList
应该怎么实现:
class RelationshipList(...):
''':relationship: <followers|fans>'''
multiple_lookup_fields = ('user_id', 'relationship')
serializer_class = None # ?
queryset = None # ?
# ...other code...?
上面想要根据 url 是 /api/users/<user_id>/followers/
或者是 /api/users/<user_id>/fans/
显示了用户的关注或者粉丝列表。
RelationshipList
应该怎么实现?
我想要实现“[关注]
” 用户和 "[取消关注]
" 用户的功能;
那么是应该使用
/api/users/<user id>/followers/
这个 API + POST or DELETE 作为关注和取消关注两个功能的开发?
还是另外使用一个 URL,编写另外一个 View class(上面的 API 用的是 Relationship
)来实现?
因为在使用 DRF save 这样的 many to many field 不太熟,
怎么实现这个 [关注]
和 [取消关注]
的功能?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…