在Django Rest Framework中,models.py中有一个TestPaper模型中有个字段是:”exam“用于连接Exam模型的外键。现在你需要在views.py中写入一个功能为, 将“Retract”这个数据存入Exam模型的status字段,并将所关联的TestPaper模型的表进行删除
时间: 2023-12-10 21:39:40 浏览: 68
通过数据库对Django进行删除字段和删除模型的操作
可以通过以下步骤实现:
1. 导入模型:
```python
from .models import Exam, TestPaper
```
2. 创建视图函数:
```python
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['POST'])
def retract_test_paper(request, test_paper_id):
try:
test_paper = TestPaper.objects.get(id=test_paper_id)
exam = test_paper.exam
except TestPaper.DoesNotExist:
return Response({'error': 'TestPaper does not exist'})
exam.status = 'Retract'
exam.save()
test_paper.delete()
return Response({'success': 'TestPaper retracted'})
```
3. 在urls.py中添加路由:
```python
from django.urls import path
from .views import retract_test_paper
urlpatterns = [
path('test-paper/<int:test_paper_id>/retract/', retract_test_paper),
]
```
现在,当访问`/test-paper/<test_paper_id>/retract/`时,会触发`retract_test_paper`函数,将所关联的TestPaper模型的表进行删除,并将“Retract”这个数据存入Exam模型的status字段。
阅读全文