该接口不能多次调用,当同一学生调用多次后报错django.db.utils.IntegrityError: (1062, "Duplicate entry '3-2' for key 'course_courselike.course_courselike_student_id_course_id_d2111753_uniq'"),该如何修改此代码以解决上述问题。
时间: 2024-04-11 20:27:42 浏览: 152
要解决报错信息中的唯一键冲突问题,你可以在创建点赞记录之前先进行一次查询,检查是否已存在该学生对应该课程的点赞记录。如果存在,就不再创建新的记录,而是返回相应的提示信息。
以下是修改后的代码示例:
```python
@api_view(['POST'])
def like_course(request):
student_id = request.data.get('student_id')
course_id = request.data.get('course_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:
# 如果已存在点赞记录,则返回提示信息
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)
```
这样修改后,当同一个学生多次调用点赞接口时,如果已经存在点赞记录,就会返回相应的提示信息,而不会再创建新的记录。
希望这次修改可以解决你的问题。如果你还有其他疑问,请随时提问!
阅读全文