在Django Rest Framework框架中,有Course模型,有Student模型,有CourseLike模型中有字段student = models.ForeignKey(Student, on_delete=models.CASCADE, related_name='student_like', )、course = models.ForeignKey(Course, on_delete=models.CASCADE, )现需要加一个功能接口,该接口主功能是点赞课程功能,具体是调用此接口时,查询该学生有无点赞此课程的记录,如果有记录则删除此条记录,如果无记录则添加一条点赞记录,确保同一个学生可以多次调用此功能接口。
时间: 2024-04-11 19:27:39 浏览: 235
对django 2.x版本中models.ForeignKey()外键说明介绍
在Django Rest Framework中,你可以通过创建一个视图函数来实现点赞课程的功能接口。首先,你需要定义一个URL路由将该视图函数与一个URL路径相对应。接下来,你可以在该视图函数中实现逻辑来查询和操作点赞记录。
下面是一个可能的实现方案:
```python
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['POST'])
def like_course(request):
student_id = request.data.get('student_id') # 获取学生ID
course_id = request.data.get('course_id') # 获取课程ID
try:
student = Student.objects.get(id=student_id)
course = Course.objects.get(id=course_id)
# 查询该学生是否已点赞该课程
like_record = CourseLike.objects.filter(student=student, course=course).first()
if like_record:
# 如果已存在点赞记录,则删除此条记录
like_record.delete()
message = "取消点赞成功"
else:
# 如果不存在点赞记录,则创建新的点赞记录
CourseLike.objects.create(student=student, course=course)
message = "点赞成功"
return Response({"message": message}, status=200)
except (Student.DoesNotExist, Course.DoesNotExist):
return Response({"message": "学生或课程不存在"}, status=404)
```
请注意,以上代码仅为示例,你需要根据你的模型和项目需求进行适当的调整。另外,这里使用了POST请求来调用接口,并且通过`request.data`来获取请求参数。你可以根据实际情况进行调整。
希望这可以帮助到你!如果你有任何其他问题,请随时提问。
阅读全文